C# 组合框已更改,清除继续操作的组合框
我想在组合框更改后清除组合框 例如,如果我有组合框1、2和3,如果2已更改,则清除3的内容C# 组合框已更改,清除继续操作的组合框,c#,C#,我想在组合框更改后清除组合框 例如,如果我有组合框1、2和3,如果2已更改,则清除3的内容 我有点被这一逻辑所束缚。我应该创建一个递归方法来做这样的事情吗?或者仅仅使用“selectedindexchanged”事件?对此有任何想法都会大有裨益 我不太确定您是在使用MVVM模式,还是在使用web或桌面(winforms或wpf)应用程序,因此我不打算具体介绍技术 一种方法是实现每个textbox的textchanged事件,并处理与每个textbox关联的逻辑。如: texbox.textcha
我有点被这一逻辑所束缚。我应该创建一个递归方法来做这样的事情吗?或者仅仅使用“selectedindexchanged”事件?对此有任何想法都会大有裨益 我不太确定您是在使用MVVM模式,还是在使用web或桌面(winforms或wpf)应用程序,因此我不打算具体介绍技术 一种方法是实现每个textbox的textchanged事件,并处理与每个textbox关联的逻辑。如:
texbox.textchange事件已触发->因此为明文(textbox2)。向同一事件订阅组合框
bool _ignore;
private void comboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
// ignore event if programmatic change
if(_ignore)
return;
_ignore = true;
// instead of push/pop can be 3 if
var index = (sender as ComboBox).SelectedIndex; // push
comboBox1.SelectedIndex = comboBox2.SelectedIndex = comboBox3.SelectedIndex = -1;
(sender as ComboBox).SelectedIndex = index; // pop
_ignore = false;
}
试试这个:
int maxNo = 4; //you can change this no and logic works till 9 comboboxes
void clearPreceding(ComboBox cmbBox)
{
int cmbBoxNo = Convert.ToInt32(cmbBox.Name.Substring(cmbBox.Name.Length - 1));
for (int i = cmbBoxNo; i <= maxNo; i++)
{
((ComboBox)this.Controls.Find("comboBox" + i, true)[0]).Text = "";
}
}
事件处理程序是:
private void AllCombobox_SelectedIndexChanged(object sender, EventArgs e)
{
clearPreceding((ComboBox)sender);
}
完整代码:
public partial class Form1 : Form
{
int maxNo = 4;
public Form1()
{
InitializeComponent();
comboBox1.SelectedIndexChanged+=AllCombobox_SelectedIndexChanged;
comboBox2.SelectedIndexChanged += AllCombobox_SelectedIndexChanged;
comboBox3.SelectedIndexChanged += AllCombobox_SelectedIndexChanged;
comboBox4.SelectedIndexChanged += AllCombobox_SelectedIndexChanged;
}
private void AllCombobox_SelectedIndexChanged(object sender, EventArgs e)
{
clearPreceding((ComboBox)sender);
}
void clearPreceding(ComboBox cmbBox)
{
int cmbBoxNo = Convert.ToInt32(cmbBox.Name.Substring(cmbBox.Name.Length - 1));
for (int i = cmbBoxNo; i <= maxNo; i++)
{
((ComboBox)this.Controls.Find("comboBox" + i, true)[0]).Text = "";
}
}
}
公共部分类表单1:表单
{
int maxNo=4;
公共表格1()
{
初始化组件();
ComboBox 1.SelectedIndexChanged+=所有ComboBox\u SelectedIndexChanged;
ComboBox 2.SelectedIndexChanged+=所有ComboBox\u SelectedIndexChanged;
comboBox3.SelectedIndexChanged+=所有ComboBox\u SelectedIndexChanged;
ComboBox 4.SelectedIndexChanged+=所有ComboBox\u SelectedIndexChanged;
}
私有void AllCombobox\u SelectedIndexChanged(对象发送方,事件参数e)
{
ClearPrevious((组合框)发送方);
}
无效ClearBox(组合框cmbBox)
{
int-cmbBoxNo=Convert.ToInt32(cmbBox.Name.Substring(cmbBox.Name.Length-1));
对于(int i=cmboxno;i),不需要递归方法suffice@SudhakarTillapudi winforms@SudhakarTillapudi我在表格上有4个。@user3302467:请在下面检查我的答案
public partial class Form1 : Form
{
int maxNo = 4;
public Form1()
{
InitializeComponent();
comboBox1.SelectedIndexChanged+=AllCombobox_SelectedIndexChanged;
comboBox2.SelectedIndexChanged += AllCombobox_SelectedIndexChanged;
comboBox3.SelectedIndexChanged += AllCombobox_SelectedIndexChanged;
comboBox4.SelectedIndexChanged += AllCombobox_SelectedIndexChanged;
}
private void AllCombobox_SelectedIndexChanged(object sender, EventArgs e)
{
clearPreceding((ComboBox)sender);
}
void clearPreceding(ComboBox cmbBox)
{
int cmbBoxNo = Convert.ToInt32(cmbBox.Name.Substring(cmbBox.Name.Length - 1));
for (int i = cmbBoxNo; i <= maxNo; i++)
{
((ComboBox)this.Controls.Find("comboBox" + i, true)[0]).Text = "";
}
}
}