我有两个组合框。我填充了这样的两个组合框。 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?
答案 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);
}