选项卡控件阻止鼠标滚动事件C#

选项卡控件阻止鼠标滚动事件C#,c#,winforms,C#,Winforms,我有一个包含多个选项卡控件的选项卡控件。所有选项卡控件都是使用winforms designer创建的。每个嵌入式选项卡控件都分配了图表对象。这些是在程序运行后创建的,每个图表有三个事件: chart.MouseWheel += new MouseEventHandler((sender, e) => this.Chart_MouseWheel(sender, e, chart, raw, condensed, bounds)); chart.MouseHover += new Event

我有一个包含多个选项卡控件的选项卡控件。所有选项卡控件都是使用winforms designer创建的。每个嵌入式选项卡控件都分配了
图表
对象。这些是在程序运行后创建的,每个图表有三个事件:

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");
}
同样的问题也发生了
tabPage3
是选项卡控件内部的选项卡控件的选项卡页

编辑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();
    }
}

即使它嵌入到其他控件中,它也会工作。

您可以连接MouseEnter()事件,并使用如下一行代码提供图表焦点:

test.MouseEnter += (s, evt) => { ((Control)s).Focus(); };

您可以连接MouseEnter()事件,并使用如下一行代码为图表提供焦点:

test.MouseEnter += (s, evt) => { ((Control)s).Focus(); };

如果直接将
Scroll()
事件添加到表单中(没有其他控件),是否可以从图表中获取该事件?@Idle\u Mind interest。因此,如果只是表单上的图表,我仍然无法让它滚动。我添加了一个
MouseEnter
事件处理程序,用于执行
test.Focus()
,然后该处理程序开始拾取scroll events.Perfect。可以扩展图表类并添加鼠标指针/焦点组合吗?如果没有,我们可以探索其他方法,使你的应用程序中的所有图表“自动”。我想我现在可以正常工作了。我在上面添加了一个编辑。如果图表仅在表单本身上,请使用
this.Focus()工作。如果它位于多个图表控件内,则无法工作。检查是否是图表首先修复了此问题。感谢@Idle\u Mind的创意如果您直接将其添加到表单中(没有其他控件),您可以从图表中获得
Scroll()
事件吗?@Idle\u Mind有趣。因此,如果只是表单上的图表,我仍然无法让它滚动。我添加了一个
MouseEnter
事件处理程序,用于执行
test.Focus()
,然后该处理程序开始拾取scroll events.Perfect。可以扩展图表类并添加鼠标指针/焦点组合吗?如果没有,我们可以探索其他方法,使你的应用程序中的所有图表“自动”。我想我现在可以正常工作了。我在上面添加了一个编辑。如果图表仅在表单本身上,请使用
this.Focus()工作。如果它位于多个图表控件内,则无法工作。检查是否是图表首先修复了此问题。谢谢你的想法“闲心”