如果在 Combox1 中选择了某个值,则应在所有其他组合框中禁用该值
本文关键字:其他 组合 选择 Combox1 如果 | 更新日期: 2023-09-27 18:35:24
如果在combox1中选择了值,则应在所有其他组合框中禁用该值。例如,我有 4 个组合框。组合框1,组合框2,组合框3,组合框4.都具有相同的值,例如 (1,2,3,4,5)如果在 ComboBox1 中选择了值 1,则应在所有其他框中禁用它,并且对于所有框都相同???谢谢,我需要快速回复。等待。M·乌斯曼
您必须从其他组合框中删除该元素,例如:
comboBox2.Items.Remove(comboBox1.SelectedItem);
您可以通过执行以下操作来处理ComboBox1 OnChange
事件:
private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// remove the item in the other lists based upon ComboBox1 selection
}
在选择时,您需要将其从其他组合框中删除。例如。
//On item selected in ComboBox1
private void showSelectedButton_Click(object sender, System.EventArgs e)
{
comboBox2.Items.Remove(comboBox1.SelectedIndex.ToString());
comboBox3.Items.Remove(comboBox1.SelectedIndex.ToString());
comboBox4.Items.Remove(comboBox1.SelectedIndex.ToString());
}
如果您不仅使用 1stcomboBox 选择项目 + 从其他人中删除,并且使用通用列表作为组合框数据源; 我想您可以使用扩展方法
/// <summary>
/// returns a new List<T> without the List<T> which won't have the given parameter
///
/// Example Usage of the extension method :
///
/// List<int> nums = new List<int>() { 1, 2, 3, 4, 5 };
///
/// List<int> i = nums.Without(3);
///
/// </summary>
/// <typeparam name="TList"> Type of the Caller Generic List </typeparam>
/// <typeparam name="T"> Type of the Parameter </typeparam>
/// <param name="list"> Name of the caller list </param>
/// <param name="item"> Generic item name which exclude from list </param>
/// <returns>List<T> Returns a generic list </returns>
public static TList Without<TList, T>(this TList list, T item) where TList : IList<T>, new()
{
TList l = new TList();
foreach (T i in list.Where(n => !n.Equals(item)))
{
l.Add(i);
}
return l;
}
然后,您可以根据需要设置哪个组合框的数据源(列表非常快)
顺便说一下,如果你想确保组合框的项目被鼠标选择(用户活动 - 不是以编程方式),你需要使用SelectionChangeCommit event;而不是SelectedIndexChanged。使用SelectedIndexChange事件,您还将捕获组合框首次加载的时间。但是使用选择更改提交事件等待进入键盘或将鼠标按到组合框的箭头以触发自身