当前位置:  开发笔记 > 编程语言 > 正文

如何在c#中防止/取消组合框的值变化?

如何解决《如何在c#中防止/取消组合框的值变化?》经验,为你挑选了1个好方法。

我在表单顶部有一个组合框,可将可编辑数据加载到下面的字段中.如果用户进行了更改但未保存,并尝试从组合框中选择其他选项,我想警告他们并给他们取消或保存的机会.

我需要一个带有可取消事件参数的"BeforeValueChange"事件.

有关如何完成的任何建议?



1> Denis Biondi..:

如果首次输入,请将ComboBox的SelectedIndex保存到框中,然后在需要取消更改时恢复其值.

cbx_Example.Enter += cbx_Example_Enter;
cbx_Example.SelectionChangeCommitted += cbx_Example_SelectionChangeCommitted;

...

private int prevExampleIndex = 0;
private void cbx_Example_Enter(object sender, EventArgs e)
{
    prevExampleIndex = cbx_Example.SelectedIndex;
}

private void cbx_Example_SelectionChangeCommitted(object sender, EventArgs e)
{
    // some custom flag to determine Edit mode
    if (mode == FormModes.EDIT) 
    {
        cbx_Example.SelectedIndex = prevExampleIndex;
    }
}


不需要使用"Enter"事件来保存最后的选择.在退出`SelectionChangeCommitted`事件处理程序之前,只需将`lastSelectedIndex`值保存为`private`变量.此后,进入该事件处理程序的后续条目可以使用`lastSelectedIndex`将`ComboBox.SelectedIndex`设置为前一个位置.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有