【问题标题】:Clear ListBox Selection when empty area is clicked单击空白区域时清除列表框选择
【发布时间】:2010-07-07 21:48:59
【问题描述】:

至少有一项在 ListBox 中始终保持选中状态。我希望当用户单击 ListBox 的空白区域时,应清除选择。如何做到这一点?

我正在尝试将 Opera Notes 复制为我的应用程序的一部分。首先我使用的是绑定的 DataGridView 现在我在左窗格上使用绑定的 ListBox

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    处理 ListBox.MouseDown 事件。

    调用 ListBox.IndexFromPoint,从 MouseDown 事件的 MouseEventArgs 参数传递 Location 属性。

    这应该返回被点击项目的索引,如果点击是在空白区域,则返回 ListBox.NoMatches。

    如果返回值为 ListBox.NoMatches,请将 ListBox.SelectedIndex 属性设置为 -1 以清除选择。

    【讨论】:

    • 谢谢!我用列表框做的,我可以用数据网格视图做同样的事情吗?
    • 请注意,您不必为了获取 MouseEventArgs 而为 MouseDown 创建新的处理程序。在现有的 Click 处理程序中,您可以将 e 转换为新的 MouseEventArgs 变量,并从中获取 Location。
    【解决方案2】:

    先生。 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();
            }
    
    
        }
    

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多