【问题标题】:C# changing selection between 2 listboxesC# 更改 2 个列表框之间的选择
【发布时间】:2015-08-06 20:27:26
【问题描述】:

所以下面的代码有一个明显的错误,当用户改变两个列表框之间的选择时,它们都被清除了。在 listbox2 中选择一个项目同时取消选择 listbox1 中的项目的最佳方法是什么,反之亦然。

    private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
     listbox2.ClearSelected()
    }

    private void listBox2_SelectedIndexChanged(object sender, System.EventArgs e)
    {
     listbox1.ClearSelected()
    }

我很想声称只是在找一个朋友,但我似乎无法弄清楚这个简单的...

为了澄清,当我从 listbox1 中选择一个项目时,代码确实有效,然后取消选择 listbox2。问题是 listbox2 立即更改,从刚刚单击的 listbox1 中取消选择项目

【问题讨论】:

  • 未选中表示选中索引=-1。你为什么要首先清除选择(给我们真实的场景,也许你的方法本身就是错误的)?您可以利用焦点事件来防止 SelectedIndexChanged 事件处理 active ListBox
  • 代码应该可以工作,除非你没有向我们展示改变选择或焦点的其他事件。

标签: c# listbox listboxitem listboxitems listbox-control


【解决方案1】:

修改两个函数如下:

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
  if (bChanging) return;
  bChanging = true;
  listbox2.ClearSelected();
  bChanging = false;
} 

bChanging 是表单的成员。
这个或类似的构造应该可以工作。

【讨论】:

  • 谢谢,这很完美。我知道这很简单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多