如何在winform c#中设置列表框的默认选择项?

时间:2010-02-12 04:48:45

标签: c# winforms listbox

我尝试这样设置:

  

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

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

我只想在选择someObject时调用SelectedIndexChanged。 我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分: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...
    }
}

答案 1 :(得分:1)

在将selectedItem更改为someObject之后才添加selectedIndexChanged事件?

从表单编辑器或designer.cs中删除该事件,并使用自动生成的相同代码手动添加它?