代码之家  ›  专栏  ›  技术社区  ›  Mark Stahler

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

  •  1
  • Mark Stahler  · 技术社区  · 15 年前

    我在上试过这个代码片段 http://fgheysels.blogspot.com/2009/06/winforms-databinding-on-cancellable.html 但是我不知道绑定到对象属性需要什么。

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

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

    任何关于如何做到这一点的建议将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Jimmy Hoffa    15 年前

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

        2
  •  1
  •   Giorgi    15 年前

    绑定的对象应该实现 IEditableObject Interface methods 用于开始、结束和取消编辑。

    推荐文章