【发布时间】:2010-07-07 21:48:59
【问题描述】:
至少有一项在 ListBox 中始终保持选中状态。我希望当用户单击 ListBox 的空白区域时,应清除选择。如何做到这一点?
我正在尝试将 Opera Notes 复制为我的应用程序的一部分。首先我使用的是绑定的 DataGridView 现在我在左窗格上使用绑定的 ListBox
【问题讨论】:
至少有一项在 ListBox 中始终保持选中状态。我希望当用户单击 ListBox 的空白区域时,应清除选择。如何做到这一点?
我正在尝试将 Opera Notes 复制为我的应用程序的一部分。首先我使用的是绑定的 DataGridView 现在我在左窗格上使用绑定的 ListBox
【问题讨论】:
处理 ListBox.MouseDown 事件。
调用 ListBox.IndexFromPoint,从 MouseDown 事件的 MouseEventArgs 参数传递 Location 属性。
这应该返回被点击项目的索引,如果点击是在空白区域,则返回 ListBox.NoMatches。
如果返回值为 ListBox.NoMatches,请将 ListBox.SelectedIndex 属性设置为 -1 以清除选择。
【讨论】:
先生。 Avalanchis 已经回答了这个问题。我只是添加了遵循他建议的步骤所需的代码。希望明确的代码会有所帮助。
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
Point pt = new Point(e.X, e.Y);
int index = listBox1.IndexFromPoint(pt);
if (index <= -1)
{
listBox1.SelectedItems.Clear();
}
}
【讨论】: