【问题标题】:C# - How to set a ComboBox selectedItem from specific value?C# - 如何从特定值设置 ComboBox selectedItem?
【发布时间】:2010-03-05 11:30:07
【问题描述】:

我已经填充了这个 ComboBox,我要做的就是将它设置为知道其值的特定 selectedItem。

我正在尝试这个,但没有任何反应:

comboPublisher.SelectedValue = livre.Editeur;

考虑到我已经在我的编辑类中实现了 Equals(..) 方法,这样:

  public  bool Equals(IEditeur editeur)
        {
            return (this.Nom == editeur.Nom);
        }

这就是我填充 ComboBox 的方式:

foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
        {
            comboPublisher.Items.Add(editeur);
        }

有什么想法吗?

谢谢!

[编辑]:这似乎适用于:

comboPublisher.SelectedItem = livre.Editeur;

我的 Equals 方法是:

 public override bool Equals(object obj)
        {
            IEditeur editeur = new Editeur();

            if (!(obj is System.DBNull))
            {
                editeur = (IEditeur)obj;
                return (this.Nom == editeur.Nom);
            }

            return false;
        }

【问题讨论】:

  • 注意,SelectedValue 仅在您指定了 ValueMember 时才有效。因此,SelectedItem 是下一个选择。

标签: c# combobox


【解决方案1】:

设置文本属性。

【讨论】:

  • 我相信它一直有效,因为您正在以编程方式进行设置。 (我必须验证。)
【解决方案2】:

您需要在 WinForm 的情况下设置 DataSources / 在 WPF 的情况下将 ItemsSource 设置为您的 cobobox,然后您才能正确使用 SelectedValue。

[更新] 与其直接将每个项目添加到组合框中,不如创建集合来保存这些项目,然后将其设置为 DataSource (WinForm) / ItemsSource (WPF)

foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
{
    //comboPublisher.Items.Add(editeur);
    list.Add(editeur);
}

combobox.ItemsSource = editeur;
combobox.SelectedValuePath = "value_property_name";
combobox.DisplayMemberPath = "display_property_name";

【讨论】:

    【解决方案3】:

    您已经创建了一个新的 Equals 实现,它隐藏了 Object 中的 Equals。尝试使用public override bool 声明它,看看是否有帮助。

    【讨论】:

    • 你说得对,我忘了覆盖。但它仍然没有解决问题:(
    • 我总是使用 SelectedItem... 也许这就是原因。 :)
    【解决方案4】:

    认为您还必须在 Editeur 类中实现 IEquatable,但将对象作为参数传递。像这样的东西。您的其余代码都很好。

    public bool Equals(Editeur other)
    {
        return (this.Nom == other.Nom);            
    }
    
    public override bool Equals(object obj)
    {
        if (obj is Editeur)
        {
            return Equals(obj as Editeur);
        }
        return false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      相关资源
      最近更新 更多