簡體   English   中英

禁用鼠標懸停效果以進行應用

[英]Disable mouse hover effect for application

有沒有一種方法可以禁用Winforms應用程序的所有控件的鼠標懸停效果? 我知道您可以通過遍歷所有控件來做到這一點,但是我寧願在應用程序級別上做到這一點。

背景是,我想禁用整個應用程序的輸入(這是通過IMessageFilter )。 用戶仍應能夠移動鼠標但不能單擊它。 這可以很好地工作,但是對控件的懸停效果仍然存在。


編輯:

例如,如果將鼠標移到按鈕上,則表示一旦鼠標移到該控件上就可以單擊它。

該應用程序由多種可能的打開形式組成,每種形式都可以啟動一個背景工作人員(線程),我需要從中控制應用程序的行為。 因此,我非常想避免與GUI線程問題混淆。

您可以從創建自己的按鈕類開始,然后覆蓋MouseEnter事件:

 protected override void OnMouseEnter(EventArgs e)
 {
     if (shouldBeEnabled)
     {
         base.OnMouseEnter(e);
     }
 }

在我看來,您只是想禁用頂層窗口。 這將解決您所有的問題, IMessageFilter需要IMessageFilter代碼。 您最終得到的代碼量很少。

您需要p /從user32調用EnableWindow API調用:

[DllImport("user32.dll")]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);

然后,您可以像這樣控制表單的可用性:

EnableWindow(MyForm.Handle, false); // disable form
EnableWindow(MyForm.Handle, true);  // enable form

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM