2012-07-02 57 views
1

我有一個winform的treeview控件,需要爲它實現onChange事件。但是,它看起來像沒有,只有onChangeUI。.net中的等效Treeview.OnChange事件是什麼?

如果treeview不支持onChange事件,它在.NET中的等價物是什麼。

我搜索了MSDN Library,但沒有找到任何信息。

更新:附註我正在將.net的win32程序轉換。

由於提前,

+0

你看過'SelectedNodeChanged'事件嗎? – Kane

+1

@Kane,這是ASP.NET樹形控件,而不是Windows窗體控件。 digitalanalog,你在尋找什麼樣的變化事件?選擇變化?項目標籤更改?還有別的嗎? –

+0

@FrédéricHamidi感謝您接受了!今天的時刻。有很多'BeforeXXX'和'AfterXXX'事件可以選擇你需要哪一個? – Kane

回答

3

支持選擇的變化是一點點在Windows限制窗體TreeView控件。

基本上,有一對事件(BeforeSelectAfterSelect),允許您在選擇樹節點時作出反應。 BeforeSelect允許您取消新的選擇,AfterSelect不會(因爲它在新的選擇被提交後發生)。

但是,如果節點未選中,則不會觸發這些事件。要檢測這種情況,您必須處理通用MouseUp事件並檢查點擊節點的IsSelected屬性以獲取實際選擇狀態。

1

這是包裝本地Windows控件的包裝類中的常見限制。哪些只會爲您無法瞭解的事情生成通知。就像用戶可以做的任何事情一樣影響控制。它省略了所做的事情的通知,其基本理念是你不必提醒你已經知道的事情。

對於TreeView來說當然是這種情況,用戶不能添加任何節點。只有你可以。在節點中顯示的文本也是如此。沒有事件告訴你文字改變了。除了用戶編輯節點AfterLabelEdit事件時的特殊情況。

您可以從TreeView派生自己的類並添加一個Change事件和OnChange()方法來觸發它。您可以編寫代碼來調用該方法。請注意,這很難做到可靠,TreeNodeCollection類沒有虛方法,因此您無法覆蓋它們來檢測客戶端代碼更改節點。實際上,最好不要編寫代碼,只需在修改TreeView內容的任何方法中的表單中生成內部事件即可。

+0

我同意你的大部分答案,但我相信這個限制不是Windows原生的,因爲好的老式樹視圖控件[TVN_SELCHANGING](http://msdn.microsoft.com/en-us/ library/windows/desktop/bb773547.aspx)和[TVN_SELCHANGED](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773544.aspx),當樹節點是未選中以及選中。當然,多次選擇是你當時實現的,但恕我直言,即使這個功能可以證明我們不得不跳過現在來處理簡單的選擇事件:) –

相關問題