将项目添加到列表框并选择它

时间:2016-09-05 10:47:35

标签: c# winforms listbox

我有一个列表框(SelectionMode设置为MultiExtended,如this topic所述),其中包含一个条目:"..."。当用户双击此对话框时,会出现一个对话框以选择单个文件。当用户选择一个时,对话框消失,文件应添加到列表中。这一切都有效。

我的问题是我只想在我的列表框中选择新添加的条目。但是,使用以下代码 - 选择"..."和实际文件:

private void lbx_DoubleClick(object sender, EventArgs e)
{
    if (this.lbx.SelectedItem == "..."
            && this.ofdReferences.ShowDialog() == DialogResult.OK
    {
        this.lbx.Items.Insert(this.lbx.SelectedIndex, this.ofdReferences.FileName);
        this.lbx.SetSelected(this.lbx.SelectedIndex - 1, true); // select newly added entry
    }
}

所以我也添加了这一行:

this.lbx.SetSelected(this.lbx.SelectedIndex, false);        // unselect ...

现在选择"..." - 条目而不是文件。

我甚至尝试使用SelectedIndex = this.lbxProjectReferences.SelectedIndex - 1。这也会选择列表中的两个条目。

1 个答案:

答案 0 :(得分:0)

SelectedIndex - 属性适用于单选列表。但是,我们可以在双击事件中的多列表中使用它也是因为双击会隐含地选择正确设置SelecteItem的单个项目。

所以我使用这种方法删除了所选条目的列表,只添加了我感兴趣的条目。

this.lbx.Items.Insert(this.lbx.SelectedIndex, this.ofdReferences.FileName);
var idx = this.lbx.SelectedIndex;
this.lbx.SelectedIndices.Clear();
this.lbx.SelectedIndices.Add(idx - 1);