设置ComboBox默认值而不直接更改SelectedIndex

jac*_*obz 4 c# combobox selectedindexchanged winforms

我有一个带有几个项目的ComboBox.我想把SelectedIndexComboBox放到0,所以当用户启动它时,第一个项目已经被选中(默认).

但是,执行this(combobox.SelectedIndex = 0;)会干扰我的事件combobox_SelectedIndexChanged(),当用户更改ComboBox的SelectedIndex时,会发生重新启动程序:

private void combobox_SelectedIndexChanged(object sender, EventArgs e)
        {
            Process.Start(Application.ExecutablePath);
            this.Close();
        }
Run Code Online (Sandbox Code Playgroud)

这将导致combobox_SelectedIndexChanged()循环无穷,combobox.SelectedIndex = 0;将触发它,这将再次触发另一个等等......

在没有这种循环的情况下,有没有办法让程序在用户更改SelectedIndex时做一些事情?

dov*_*vid 7

删除事件处理程序(通过单击属性窗格顶部的闪电.然后清除SelectedIndexChanged处理程序).

在构造函数代码中,首先设置SelectedValue,然后添加事件处理程序.这里:

public Form1()
{
    InitializeComponent();

    comboBox1.SelectedIndex = 0;
    comboBox1.SelectedIndexChanged += combobox_SelectedIndexChanged;
}

private void combobox_SelectedIndexChanged(object sender, EventArgs e)
{
    Process.Start(Application.ExecutablePath);
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)