如何取消组合框';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;
            }
        }
    }

如何取消组合框';c中的s值变化

您可以将当前所选索引的信息保存在私有变量中,并执行以下操作:

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;
    }
}