【问题标题】:Add Item to ComboBox with a neat way以简洁的方式将项目添加到 ComboBox
【发布时间】:2015-04-08 21:29:37
【问题描述】:

触发事件后,我想在 WinForm 中的 ComboBox 中添加更多项目。

以下是我的示例代码,一点都不整洁,也违反了 DRY(不要重复自己)原则。我是一个寻求简洁代码的新手。请帮帮我。

Combobox1.Items.Add("aaa")
Combobox2.Items.Add("aaa")
....
Combobox50.Items.Add("aaa")

如您所见,如果只需将 5 到 10 个项目添加到 Combobox,我就可以这样做。如果有 50 个呢?我想选择某些组合框来添加项目。

我想找到一个更好的方法来做到这一点,不要重复上述例程太长时间。请帮我写一个更整洁的代码。谢谢!!!

【问题讨论】:

  • 只有当你知道如何使用谷歌时。
  • asp.net和winforms/vb.net和c#的答案可能不一样,你用的是什么?
  • 填充集合并将集合绑定到 Combobox。单独的绑定和数据准备,以便如果明天数据源发生变化,它不会产生太大影响,可能需要进行一些小的调整。此外,如果您了解 DRY 原理并思考如何不重复,那么解决方案将很容易为您提供。
  • 另外,您是否要添加到表单/页面中的每个组合框?还是只是某个选择?
  • 我只是想将项目添加到某个集合中。我曾经在 Webform 中使用 findcontrol 方法,但迁移到 winform 让我觉得一切都变得如此不同。欢迎使用VB或C#中的方法,我想我至少可以自己找到一个VB到C#的转换。

标签: c# vb.net winforms combobox


【解决方案1】:

如果您在一个表单或网页上有 50 个组合框,那么首先您需要从用户的角度重新设计您的 UI - 这可能涉及太多信息,以至于一个人在任何时候都无法接受.

如果它是一组控件,那么您最好将所有组合框添加到面板中,然后对其进行迭代。

foreach(var cb in this.panelName.Controls.OfType<ComboBox>())
     cb.Items.Add("aaa");

如果它的所有组合框你可以使用this.Controls 但是这不会检查子控件(即面板内)。为此,您可以使用 an answer given by Jon Skeet

中的以下内容
foreach(var cb in this.GetAll<ComboBox>())
     cb.Items.Add("aaa");

【讨论】:

  • 谢谢,关键字“通用”不在我的搜索关键字中。感谢您提供有用的信息。我会看看相关的主题。
  • @ckpeanut - 不用担心,希望对您有所帮助。作为预警,如果您在 winforms 中使用任何选项卡控件,那么在访问选项卡页面之前这将不起作用(它在 winforms 中的一个小“错误”)(我也认为选项卡现在主要是过时的,应该尽可能避免,但是嘿嘿)
  • 我正在考虑任何解决方案,例如像这样为 (int i = 1; i
  • @ckpeanut ,你不应该这样做,你应该只需要更新相似的值,它们应该彼此靠近(同一个面板)。我确实忘记提及您应该查看的一件事是DataBinding,然后您只需将所有组合框分配为从同一个列表中填充,然后添加到列表中一次
  • 好的,我会做作业并将其添加到我的关键字中。谢谢你的指导。这确实有帮助。 : D
【解决方案2】:

最好使用DataGridView

DataGridView 实际上有一个DataGridViewComboBoxColumn

参考 Ref1 Ref2

【讨论】:

    【解决方案3】:

    假设您的组合框位于container1(例如可以是组框)中,您可以执行以下操作:

    foreach(ComboBox cbx in container1)
    {
       cbx.Items.Add("aaa");
    }
    

    【讨论】:

    • 哇,这很酷,我从来没有想过这个。好点子!
    • @ckpeanut:如果它帮助您完成您在问题中提出的问题,请不要忘记投票/接受答案:)
    【解决方案4】:

    这是你可以尝试的:

    foreach(ComboBox cb in controlpanel1)
    {
      foreach(items a in ListItems)
      {
         cb.Items.Add(a);
      }
    }  
    

    就是这样。希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2013-12-25
      • 1970-01-01
      相关资源
      最近更新 更多