【问题标题】:Winforms ComboBox is adding a line item at runtimeWinforms ComboBox 在运行时添加一个行项目
【发布时间】:2018-04-26 23:22:27
【问题描述】:

以下更新

var billers = user.FindBillers();
billers.Insert(0, new user { strLName = "- -" });
billers.Insert(1, new user { strLName = "Provider Default" });


cboBillingProvdr.DataSource = null;
cboBillingProvdr.DataSource = billers;
cboBillingProvdr.DisplayMember = "FullName";
cboBillingProvdr.ValueMember = "ID";


if (Currentuser.billerid == -1)
    cboBillingProvdr.SelectedIndex = 1;
else if (CurrentUser.billerid > 0)
    cboBillingProvdr.SelectedValue = CurrentUser.billerid ;
else
    cboBillingProvdr.SelectedIndex = 0;

这是ComboBoxForm 上的显示方式,如果有任何来自数据库的帐单值 (>0):

 - -
 Provider Default
 --
 Provider 1
 Provider 2
 Provider 3 

更新:我在 user.findbillers 中没有看到任何地方添加了“--”。但是我相信下面的代码在相同的表单上是这样做的。当我评论它时,一切似乎都正常。

    var Physicians= user.FindBillers();
    cboPhysician.DataSource = null;
    Physicians.Insert(0, new user { strFName = "--" });
    Physician.DataSource = Physicians;
    Physician.DisplayMember = "FullName";

表单的加载和随后的点击调用这些,但我不知道为什么一个会影响另一个。

【问题讨论】:

    标签: c# winforms combobox


    【解决方案1】:

    您在此范围内的代码未添加“--”项,您需要检查您的 user.FindBillers() 方法(或将其发布在此处作为编辑)。应该有一行代码类似于:

    /* assuming the returned collection's name is 'findBillers' */
    findBillers.Insert(0, new user { "--" });
    /* or */
    findBillers.Add(new user { "--" });
    

    这样,您发布的列表将返回如下结果:

    --
    Provider 1
    Provider 2
    Provider 3 
    

    然后,用你的两行代码

    billers.Insert(0, new user { strLName = "- -" });
    billers.Insert(1, new user { strLName = "Provider Default" });
    

    你以这个列表结束

    - - (Inserted at 0)
    Provider Default (Inserted at 1)
    --
    Provider 1
    Provider 2
    Provider 3 
    

    所以,你必须要么

    a) 注释/删除 user.FindBillers() 中的行

    b) 注释/删除您在 billers 中的两个插入,并在 user.FindBillers() 中添加 Provider Default

    编辑:您可以发布 user.FindBillers() 的代码,我会更新我的答案。

    【讨论】:

    • 我想知道。说得通。我会在用户中寻找“--”。
    • 所以在同一个表单上有 user.FindBillers 并且它在不同的组合框中添加了一个“--”,这似乎是问题所在!我从没想过这会影响这个计费组合框!
    • 当心side effect
    • 我在上面添加了影响这个组合的代码。它们位于相同的表单,不同的选项卡上。用户类本身没有任何内容。
    • @Ree 您的问题在user 类中(在Visual Studio 中右键单击FindBillers() 并选择Go To Definition(或突出显示代码并单击F12
    【解决方案2】:

    已解决。我在用户类中添加了另一个方法 FindBillers1() 并调用它来填充第二个组合,它的工作就像听起来一样疯狂。 FindBillers 和 FindBillers1 之间没有区别,只是名称不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2017-05-20
      • 2021-07-17
      • 2012-05-25
      • 2018-09-07
      相关资源
      最近更新 更多