我用下面的代碼進行試驗:鼠標滾輪不會觸發事件,因爲文本框搶斷焦點
public Form1()
{
InitializeComponent();
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);
}
private void Form1_MouseWheel(object sender, MouseEventArgs e)
{
textBox1.Text += "delta : " + e.Delta + "\r\n";
}
但事件似乎從來不火。然後我注意到,表格一出現,文本框就得到了重點,事實上,在我刪除它之後,該事件開始運作。
現在,問題:
- 我怎樣才能讓事件觸發時窗體是頂級窗口, 即使我有它一個textarea?
- 我應該簡單地將相同的事件添加到textarea,還是有一個簡單的方法來做到這一點,我看不到?
- 有沒有辦法等待「滾輪滾動」結束,然後讓 事件發生?我需要成倍增加的整數值 基於多久車輪已經鋪開
這是否也發生在鼠標位於textarea之外?您可以重寫textarea對象的MouseWheel事件,並讓它調用您的窗體MouseWheel事件。 – MrFox
是的,它發生在鼠標所在的位置。覆蓋textarea的MouseWheel事件是我想到的解決方案,但我希望有一些「更簡單」:在複雜的用戶界面中,我可能會有很多組件偷取焦點,這會讓我唯一的選項覆蓋每一個? – kaharas
再說一次,如果某些組件沒有MouseWheel事件,但可以獲得焦點呢? – kaharas