Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WinForms-具有可取消表单的数据绑定简单组件_C#_Winforms_Data Binding - Fatal编程技术网

C#WinForms-具有可取消表单的数据绑定简单组件

C#WinForms-具有可取消表单的数据绑定简单组件,c#,winforms,data-binding,C#,Winforms,Data Binding,如何使用绑定到对象属性并具有保存/取消支持的简单组件(文本框、组合框)实现表单 我在尝试了代码片段,但我不知道绑定到对象属性需要什么 这就是我所拥有的,但我不知道如何获得“取消”按钮以防止对象属性被更新。即使按下“取消”按钮,属性也会使用上次输入的值进行更新 public DocumentProperties(FileFormatReader fileReader) { binding = new BindingSource(); binding.

如何使用绑定到对象属性并具有保存/取消支持的简单组件(文本框、组合框)实现表单

我在尝试了代码片段,但我不知道绑定到对象属性需要什么

这就是我所拥有的,但我不知道如何获得“取消”按钮以防止对象属性被更新。即使按下“取消”按钮,属性也会使用上次输入的值进行更新

    public DocumentProperties(FileFormatReader fileReader)
    {
        binding = new BindingSource();
        binding.DataSource = fileReader.Header;
        bindingManager = BindingContext[binding.DataSource];

        unitComboBox.DataSource = Enum.GetNames(typeof(Constants.Units));
        unitComboBox.DataBindings.Add("SelectedIndex", binding.DataSource, "UnitNumberIndex");

        operatorTextBox.Text = fileReader.Header.OperatorName;
        operatorTextBox.DataBindings.Add("Text", binding, "OperatorName");

        binding.SuspendBinding();       // Doesnt work
   }

    private void okButton_Click(object sender, EventArgs e)
    {
        binding.ResumeBinding();
        this.DialogResult = DialogResult.OK;
    }

    private void cancelButton_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
    }

如果您对如何执行此操作有任何建议,我们将不胜感激。

打开值时将其缓存,并在“取消按钮”处理程序中将其重置为缓存的值。

您要绑定的对象应该实现它,它具有开始、结束和取消编辑的功能。

谢谢。我尝试使用它,但由于某种原因,BeginEdit()触发了三次,EndEdit()也在表单加载过程中触发。真奇怪,不得不手动取消。NET没有更好的解决方案,这真是太差劲了。