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組合嗎?如果沒有,我們可以探索其他方式爲您的應用中的所有圖表製作「自動」。 –