1
我有一个包含多个选项卡控件的选项卡控件。所有的选项卡控件都是使用winforms设计器创建的。嵌入式选项卡控件每个都有分配给它们的对象Chart
。这些是程序运行后创建的,并且在每个排行榜中给出的三个事件:选项卡控件阻止鼠标滚动事件C#
chart.MouseWheel += new MouseEventHandler((sender, e) => this.Chart_MouseWheel(sender, e, chart, raw, condensed, bounds));
chart.MouseHover += new EventHandler(Chart_Hover);
chart.MouseClick += new MouseEventHandler((sender, e) => this.Chart_Click(sender, e, chart));
为了方便调试,我添加了一个简单Console.WriteLine();
每个方法,看看实际上被解雇哪些方法。
private void Chart_MouseWheel(object sender, MouseEventArgs e, Chart chart, DataTable raw, DataCondenser condensed, List<double> bounds)
{
Console.WriteLine("a");
}
private void Chart_Hover(object sender, EventArgs e)
{
Console.WriteLine("b");
}
private void Chart_Click(object sender, MouseEventArgs e, Chart chart)
{
Console.WriteLine("c");
}
徘徊,点击和滚动了很多,我只能得到b
和c
将被输出。出于某种原因,滚动事件不会被拾取。我有一种感觉,这与一个选项卡控件内部有关。
任何想法为什么会发生这种情况?
编辑:
试过这种小规模的版本,同样的事情正在发生。
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Chart test = new Chart();
test.Width = 500;
test.Height = 500;
test.MouseWheel += new MouseEventHandler(Chart_Scroll);
test.MouseHover += new EventHandler(Chart_Hover); //mousehover event for the tooltip to activate
test.MouseClick += new MouseEventHandler(Chart_Click);
tabPage3.Controls.Add(test);
}
private void Chart_Scroll(object sender, MouseEventArgs e)
{
Console.WriteLine("a");
}
private void Chart_Hover(object sender, EventArgs e)
{
Console.WriteLine("b");
}
private void Chart_Click(object sender, MouseEventArgs e)
{
Console.WriteLine("c");
}
发生了同样的问题。 tabPage3
是选项卡控件内tab控件的tabpage。
编辑2:
所以如果我给图表此事件处理程序:
test.MouseEnter += new EventHandler(mouseEnter);
与方法:
private void mouseEnter(object sender, EventArgs e)
{
this.Focus();
}
它仍然无法正常工作。但是,如果我使用这个:
private void mouseEnter(object sender, EventArgs e)
{
if (sender is Chart)
{
Chart temp = (Chart) sender;
temp.Focus();
}
}
即使它嵌入到其他控件中,它也可以工作。
可以的,如果你加它,你得到一个'滚动()'从图表事件* *直接**到表格(不存在其他控件)? –
@Idle_Mind有趣。所以如果它只是表格上的图表,我仍然无法滚动。我添加了一个'MouseEnter'事件处理程序来执行'test.Focus()',然后开始拾取滚动事件。 – Tim
完美。你可以扩展Chart类并添加MouseEnter/Focus组合吗?如果没有,我们可以探索其他方式为您的应用中的所有图表制作“自动”。 –