【发布时间】:2015-07-04 17:13:56
【问题描述】:
我有一个组合框。
如果用户进行了更改但未保存,并尝试从组合框中选择不同的选项,则消息框会警告他们并给他们机会
1 取消(保留更改)
2 否(放弃更改)
3 是(保存费用)
例如:
组合框包含的值
电脑
笔记本电脑
电话
电视
相机
用户选择了“相机”,然后将其更改为“相机78778” 然后用户从组合框中选择了另一个值(比如 "Computer" )
消息框警告他们并给他们机会
1 取消(保留更改):组合框为“Camera78778”
2 否(放弃更改):组合框是“计算机”
3 是(保存更改):组合框是“计算机”,但此处更改已保存。
我需要取消的代码。
我试过 comboBox1.SelectedIndexChanged -= comboBox1._SelectedIndexChanged; 但没有解决办法。 我尝试了 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;
}
}
}
【问题讨论】:
-
因为你使用
SelectionChangeCommitted你不需要“删除”然后“添加”SelectedIndexChanged事件的事件处理程序