如何取消组合框';c中的s值变化
本文关键字:中的 变化 何取消 取消 组合 | 更新日期: 2023-09-27 18:00:59
我有一个组合框。
如果用户进行了更改,但没有保存,并试图从组合框中选择不同的选项,则会出现一个消息框警告他们,并给他们一个的机会
1取消(保留更改(
2否(放弃更改(
3是(保存更改(
例如:
组合框包含值
计算机
笔记本电脑
电话
电视
相机
用户选择"相机",然后将其更改为"Camera78778"然后用户从组合框中选择另一个值(比如"计算机"(
messageBox会警告他们,并给他们一个进入的机会
1取消(保留更改(:组合框为"Camera78778">
2否(放弃更改(:组合框为"计算机">
3是(保存更改(:组合框为"计算机",但此处已保存更改。
我需要取消的代码。
我尝试了comboBox1.SelectedIndexChanged-=comboBox2._SelectedIndexChangd;但没有解决方案。我尝试了comboBox1_SelectionChangeCommitted,但没有解决方案。
提前感谢。
更新
int lastIndexcomboBox1 = -1;
private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
Myfunction(comboBox1.SelectedIndex);
}
private void Myfunction(int comboBox1SelectedIndex)
{
if(comboBox1.Tag.ToString() == "not changed")
{
}
else
{
DialogResult dr = MessageBox.Show("Do you want to save", "", MessageBoxButtons.YesNoCancel);
if (dr == DialogResult.Yes)
{
}
else if (dr == DialogResult.No)
{
}
else if (dr == DialogResult.Cancel)
{
comboBox1.SelectedIndexChanged -= comboBox1_SelectedIndexChanged;
comboBox1.SelectedIndex = lastIndexcomboBox1;
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
}
}
}
您可以将当前所选索引的信息保存在私有变量中,并执行以下操作:
private int _comboBoxIndex = -1;
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
var dialogResult = MessageBox.Show("Confirm your action", "Info", MessageBoxButtons.YesNoCancel);
switch (dialogResult)
{
// Detach event just to avoid popping message box again
case DialogResult.Cancel:
comboBox.SelectedIndexChanged -= comboBox_SelectedIndexChanged;
comboBox.SelectedIndex = _comboBoxIndex;
comboBox.SelectedIndexChanged += comboBox_SelectedIndexChanged;
break;
case DialogResult.No:
// Do something
_comboBoxIndex = comboBox.SelectedIndex;
break;
case DialogResult.Yes:
// Do something
_comboBoxIndex = comboBox.SelectedIndex;
break;
}
}