【问题标题】:Winforms combobox compareWinforms组合框比较
【发布时间】:2010-07-26 13:17:14
【问题描述】:

我在我的 C# .net windows 应用程序中使用两个组合框,例如组合框 1 和组合框 2(两个组合框包含相同的项目),如果我在组合框 1 中选择任何项目,我需要在组合框 2 中隐藏该值。

【问题讨论】:

  • 您的问题到底是什么?也许您可以提供一些代码来帮助我们找到问题?
  • 您想隐藏还是删除?
  • Lawrance,您是否要制作一个“选择器”控件,即 2 个列表框,其间带有 > 之类的按钮,以便从中选择项目,添加到另一个?您的问题并没有从字面上这么说,但这是一个常见的小部件,winforms 还没有附带(他们可能正在为 WPF 保存它)。如果这是您想要的,请编辑以便我们提供帮助。

标签: c# winforms combobox


【解决方案1】:

最简单的解决方案是处理第一个组合框上的SelectedItemChanged 并为第二个组合框重新生成项目列表,以便排除第一个组合框中的选定项目。如果您没有大量项目,这应该可以正常运行。另一个需要考虑的边界情况:

  • 如果您稍后更改第一个组合框中的选择以匹配第二个组合框中的选择,您可能需要清除并重置第二个组合框。您可以在第一个组合框上的同一 SelectedItemChanged 事件处理程序中处理这种情况。

【讨论】:

    【解决方案2】:

    我猜您希望在第二个组合框中选择与第一个组合框中相同的索引。

    所以在combobox1SelectedIndexChanged 事件上添加以下代码:

    combobox2.SelectedIndex = combobox1.SelectedIndex;

    【讨论】:

      【解决方案3】:

      最简单但可能不是最干净的:

      每次在combobox1中选择一个项目时,只需根据combobox1中没有的内容重新填充combobox2。

      【讨论】:

        【解决方案4】:

        您可以使用 Contains 来检查一个是否有另一个,并执行一个循环来检查所有项目。

         for (int i = 0; i < ListBox1.Items.Count; i++)
                    {
                        if (ListBox2.Items.Contains(ListBox1.Items[i]))
                        {
                                ListBox1.Items.RemoveAt(i);
                                i--;
                        }
                    }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多