我想獲得鼠標懸停控件的類型。請幫助在mouseover上獲取控件的類型
1
A
回答
1
你可以得到UIElement的類型在其上鼠標當前正在使用MouseMove
事件移動。由於這是冒泡事件,因此您可以將處理程序附加到容器(如Canvas)。
鼠標當前移動的UIElement可以從MouseEventArgs
OriginalSource
屬性獲得。
因此,以確定在該鼠標移動,你可以使用這樣的代碼類型: -
void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Type currentType = e.OriginalSource.GetType();
// Make decisions based on value of currentType here
}
但是你需要小心,MouseMove事件頻繁觸發用戶移動鼠標,所以你可能要延遲任何繁重的工作,直到最後一次鼠標移動後有一段時間。
不幸的是沒有事件發生鼠標。
另一種替代方法是將相同的MouseEnter處理程序附加到您添加到Canvas的每個子UIElement。在這種情況下,您可以使用sender
而不是e.OriginalSource
。如果從Canvas中刪除元素,則必須小心刪除該處理程序,否則可以創建看起來像是內存泄漏的內容。
0
將mouse_enter
事件添加到控件。
你可以用一行代碼的類型遵循
var x = sender.GetType();
然後,您可以使用類似的比較吧:
if (x.Equals(typeof(TreeView)))
+0
感謝回覆Johannes 但是我的容器中有多個控件,比如說Ellipse,Rectangle,TextBlock等等,我應該可以在一個函數中獲得類型 – Sathish 2010-02-18 12:20:48
相關問題
- 1. 獲取MouseOver上的ListBoxItem的內容以顯示在不同的控件中
- 2. WebBrowser控件 - 獲取元素按類型?
- 3. 獲取控件的類型T的子控件
- 4. WPF - 訪問MouseOver上顯示的控件
- 5. 獲取綁定類型模板列控制在GridView控件
- 6. 在mouseover上更改d3類
- 7. 如何獲取用戶控件數據類型所在的TabPage
- 8. 獲取類別過濾器控件的類型
- 9. 在rails上獲取電子郵件附件的內容類型
- 10. 在vb.net的Mouseover上獲取元素的id(在webbrowser)
- 11. 獲取類型的類型
- 12. 從ASP.NET FileUpload控件獲取文件的類型?
- 13. 在控制器中獲取模型的類型
- 14. 獲取onChange事件類型
- 15. 在輸入類型=文件上捕獲取消事件
- 16. WPF - 獲取頁面上給定類型的所有控件的集合?
- 17. HtmlAgilityPack獲取頁面控件的名稱和屬性的類型
- 18. 如何獲取dat.gui控制器類型?
- 19. 獲取標識和類型來控制
- 20. 如何在Django表單中獲取上傳文件的類型?
- 21. 獲取上類型的值的jQuery
- 22. 在WPF中更改MouseOver上的子控件樣式
- 23. 獲取泛型類的類的類型?
- 24. 獲取文件上傳控件的ID
- 25. 獲取控件上執行的事件
- 26. 從特定控件類型的複合材料中獲取所有控件
- 27. 在服務器上的formview控件中獲取HTML控件
- 28. 獲取泛型類類型
- 29. 獲取一個GTK控件的類型,由蟒蛇
- 30. 如何根據路徑獲取用戶控件的類型
我們需要更多的細節。沒有鼠標懸停事件,因此您要參考哪個實際事件? MouseMove或MouseEnter?期望將相同的事件處理程序附加到不同類型的多個控件,並且您想確定哪種類型正在觸發?或者您是否期望將冒泡事件的處理程序附加到某個父容器? – AnthonyWJones 2010-02-18 12:29:25