通过组合框项目值删除组合框项目

时间:2015-01-26 03:37:34

标签: c# winforms combobox

我有两个组合框。我填充了这样的两个组合框。 Combobox 1和2名称是cmbpartyName和cmbprefPT2。

    SqlDataReader reader = new VotingOP().getPartyNamesToCombo();
        while (reader.Read())
        {
          cmbPartyName.Items.Add(new MyComboItem() { MyItemID = Convert.ToInt32(reader["partyID"]), MyItemName = reader["partyName"].ToString() });
        }
        reader.Close();
        cmbPartyName.ValueMember = "MyItemID";
        cmbPartyName.DisplayMember = "MyItemName";

        SqlDataReader reader01 = new VotingOP().getPartyNamesToCombo();
        while (reader01.Read())
        {

            cmbPrefPT2.Items.Add(new MyComboItem() { MyItemID = Convert.ToInt32(reader01["partyID"]), MyItemName = reader01["partyName"].ToString() });
        }
        reader01.Close();
        cmbPrefPT2.ValueMember = "MyItemID";
        cmbPrefPT2.DisplayMember = "MyItemName";

在这里,我在这个选定的索引更改事件中从combobox1中选择一个值。

      private void cmbPartyName_SelectedIndexChanged(object sender, EventArgs e)
    {
        MyComboItem selectedItem = (MyComboItem)cmbPartyName.SelectedItem as MyComboItem;
        if (selectedItem != null)
        {

            MessageBox.Show(String.Format("You've just selected the '{0}' partyID with the Name {1}",selectedItem.MyItemID,selectedItem.MyItemName));

        }
    }

由于两个组合框具有相同的值,如何从第二个组合框cmbPrefPT2中删除第一个组合框的选定值cmbparty?

1 个答案:

答案 0 :(得分:0)

您可以使MyComboItem实现IEquatable

  public class MyComboItem : IEquatable<MyComboItem>
  {
    public int MyItemId { get; set; }
    public string MyItemName { get; set; }
    public bool Equals(MyComboItem other)
    {
        return MyItemId == other.MyItemId;
    }
  }

然后你可以在事件处理程序中调用第二个组合框的remove方法,传递第一个组合框的selecteditem

MyComboItem selectedItem = (MyComboItem)cmbPartyName.SelectedItem as MyComboItem;
    if (selectedItem != null)
    {
         cmbPrefPT2.Items.Remove(cmbPartyName.SelectedItem);
    }