如何停止列表框自动选择?

时间:2018-11-07 23:03:12

标签: c#

加载listbox并更改DataSourcelistbox触发选定索引更改功能。如何避免触发此功能? 我尝试了这个:

  

somelistbox.SelectedIndex = -1;

添加此选项后,listbox不会选择第一个元素(至少在UI中不可见),但是会触发选择索引的功能,就像选择了第一个元素一样。

1 个答案:

答案 0 :(得分:2)

您可以使用警卫。

private bool _isSelectionEnabled = true;

在事件处理程序中

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (_isSelectionEnabled) {
        // Put selection logic here.
    }
}

设置数据源时

_isSelectionEnabled = false;
try {
    listBox1.DataSource = datasource;
} finally {
    _isSelectionEnabled = true;
}

即使在发生异常的情况下,try-finally仍可确保在任何情况下重置该标志。

如果您不希望触发逻辑,也可以在代码中设置SelectedIndex时执行此操作。