此問題與this my question有關。現在我已經在我的課堂上學習了,當用戶點擊按鈕時,我顯示(或隱藏)了表格。沒關係。但是當我用原始形式移動或者當我點擊原始形式的某處時,我想隱藏表單。新形式落後於原始形式。我正在嘗試像lostFocus和其他人一樣的事件,但它沒有幫助。所以我想我需要一些技巧來檢查我的控制是否有點擊parrent形式(原始形式)或其他黑客。我知道最好的是我放置代碼,但我有很多行,所以我認爲最好的方式是,如果你以一般方式幫助我,然後嘗試應用到我的應用程序。隱藏形式何時是其他控件重點
2
A
回答
0
你可以用全局鼠標和鍵盤hook來做到這一點。事實上,它已被封裝到有據可查的結構良好的.NET API中,在CodePlex
轉到那裏並下載它。然後,建立一個全球性的鼠標鉤子:
_mouseListener = new MouseHookListener(new GlobalHooker());
_mouseListener.MouseMove += HandleGlobalHookMouseMove;
_mouseListener.Start();
這裏的關鍵是,你將ANYWHERE鼠標移動接收MouseMove事件的任何時間在桌面上,不只是你的窗口的範圍內。
private void HandleAppHookMouseMove(object sender, MouseEventArgs e)
{
if (this.Bounds.Contains(e.Location))
{
HandleEnter();
}
else
{
HandleLeave();
}
}
您還可以設置一個MouseClick
。兩者的結合將使您可以隨時確定鼠標移過原點的形式,或者在鼠標點擊它時點擊鼠標。與您嘗試的LostFocus
和其他事件不同,重點是無關緊要的。
0
以下幫助嗎?
public partial class Form1 : Form
{
Form f2 = new Form2();
public Form1()
{
InitializeComponent();
f2.Show();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (this.ClientRectangle.Contains(e.Location) && f2.Visible) { f2.Hide(); }
}
private void button1_Click(object sender, EventArgs e)
{
f2.Visible = !f2.Visible ? true : false;
}
}
相關問題
- 1. 如何隱藏其他兩個控件已隱藏的控件?
- 2. 當其他窗口焦點時隱藏彈出控件
- 3. 檢測點擊其他重疊子控件隱藏的子控件
- 4. Flowlayout Panel被其他控件隱藏 - Winform
- 5. 多重隱藏形式
- 6. 以編程方式創建的UITextField隱藏其他控件
- 7. 如何隱藏子菜單時其他菜單點擊JQuery的
- 8. 可擴展組件隱藏或取消隱藏其他組件
- 9. 隱藏比我有其他點擊其他的div ... jQuery的
- 10. jquery - 文本框隱藏其重點
- 11. jQuery不隱藏其他DIV
- 12. JS:隱藏其他腳本
- 13. jQuery - 點擊新div時隱藏其他div
- 14. jQuery在點擊時顯示div,隱藏其他
- 15. 隱藏數據系列點,同時顯示其他人與flot
- 16. JQuery的幫助,點擊時隱藏其他元素
- 17. 當點擊其他地方時隱藏div菜單
- 18. 在點擊除div以外的其他主體時隱藏div
- 19. 當用戶點擊其他地方時隱藏表格
- 20. 當其他菜單被點擊時jQuery隱藏子菜單
- 21. 當另一個控件與它重疊時隱藏控件
- 22. 自動完成列表隱藏在其他控件的後面
- 23. 隱藏菜單(div)當滾動時與其他元素重疊
- 24. CQ5在其他站點上隱藏組件
- 25. 當發送多個郵件時隱藏其他收件人
- 26. 隱藏silverlight控件和其他控件應該自動向上移動
- 27. 禁用其他形式的控制
- 28. 以其他形式更新控制
- 29. 其他形式的操縱控制
- 30. 依賴於其他形式的控制