Как установить выбранный по умолчанию элемент списка в winform С#?

Я пытаюсь установить так:

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

lb верно выбрал элемент someObject. Но сначала он выбрал бы 1-й элемент. И это движение вызывает событие SelectedIndexChanged, которого я не хотел.

Я просто хочу, чтобы SelectedIndexChanged вызывался при выборе некоторого объекта. Как я могу это исправить?


person Jennal    schedule 12.02.2010    source источник


Ответы (2)


Используйте флаг в форме/элементе управления, чтобы отключить событие, если вы не хотите, чтобы оно запускалось.

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...
    }
}
person Aaronaught    schedule 12.02.2010

не добавляйте событие selectedIndexChanged до тех пор, пока вы не измените selectedItem на someObject ?

удалить событие из редактора форм или из Designer.cs и добавить его вручную, используя тот же код, который он генерирует автоматически?

person matt    schedule 12.02.2010