2012-06-26 86 views
1

我有一個自定義用戶控件擴展Listbox類。在它內部,我重寫了OnSelectionChanged以將Adorners添加/刪除到任何選定/未選定的項目。這一切工作時我選擇使用鼠標一個項目,但是當我編程方式添加到項目使用Listbox.SelectedItems.Add不導致SelectionChanged事件

myListBox.SelectedItems.Add(newItem) // newItem is already a member of myListBox.Items 

列表框它不執行OnSelectionChanged代碼。

更新:除非我瘋了(這始終是可能的),似乎有從父對象

myListBox.SelectedItems.Add(newItem) 

和我的擴展列表框類

在此方法中調用此之間的行爲差​​異
Public Sub AddSelectedItem(newItem as Object) 
    Me.SelectedItems.Add(newItem) 
End Sub 

出於某種原因,第二個選項是觸發事件,而第一個選項不是。

回答

0

這裏的解決方法是調用SelectedItems.Add()從Control

public class MyListBox : ListBox 
{ 
public void AddSelectedItems(object newSelectedItem) 
{ 
    // works 
    this.SelectedItems.Add(newSelectedItem); 
} 
} 

的延伸內將觸發OnSelectionChanged事件。

從窗口調用它像這樣將不會觸發事件

private sub SomeWindowMethod() 
{ 
    // does not work 
    this.MyListBoxInstance.SelectedItems.Add(newSelectedItem); 
} 
0

你需要添加這行代碼第一

myListBox.Items.Add(newItem) 
+0

它已經myListBox.Items成員 –

相關問題