2010-02-12 78 views
2

我尝试设置这样的:如何在winform c#中设置列表框的默认选定项?

ListBox lb = new ListBox();
/* Bind datas */
lb.SelectedItem = someObject;

磅忠实地选择了someObject项目。但它会首先选择第一项。那个动作会导致我不想要的SelectedIndexChanged事件。

我只想在选择someObject时调用SelectedIndexChanged。 我该如何解决这个问题?

回答

4

当您不希望它触发时,在窗体/控件上使用标志来禁用事件。

public class Form1 : Form 
{ 
    private bool itemsLoading; 

    public Form1() 
    { 
     InitializeComponent(); 
     LoadListItems(); 
    } 

    private void LoadListItems() 
    { 
     itemsLoading = true; 
     try 
     { 
      listBox1.DataSource = ... 
      listBox1.SelectedItem = ... 
     } 
     finally 
     { 
      itemsLoading = false; 
     } 
    } 

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (itemsLoading) 
      return; 

     // Handle the changed event here... 
    } 
} 
+0

这是很酷的解决方案! 谢谢! – Jennal 2010-02-13 01:03:09

1

直到您将selectedItem更改为someObject之后才添加selectedIndexChanged事件?

将事件从表单编辑器或者designer.cs中移出,然后使用自动生成的相同代码手动添加它?

相关问题