如何在设计器中自动设置DataSourceUpdateMode?

时间:2016-03-12 14:29:28

标签: c# winforms data-binding

我有一个具有双向可绑定属性的自定义控件。我还在价值的设定者身上举起ValueChanged事件。

对于此类自定义控件,我需要将DataSourceUpdateMode更改为OnPropertyChanged而不是标准OnValidating

当我在设计器中进行所有数据绑定时,自定义控件是否可能在添加到表单后将数据绑定设置为OnPropertyChanged

编辑:

目前我正在这样做:

    protected override void OnCreateControl()
    {
        base.OnCreateControl();

        Binding binding = this.DataBindings[0] as Binding;
        if (binding != null)
        {
            binding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
        }
    }

这是正确的方法还是OnBindingContextChanged更合适的事件?

1 个答案:

答案 0 :(得分:1)

OnCreateControl没用,OnBindingContextChanged更适合更改DataBindings。另外,DataBindings[0]代替DataBindings,您应该使用if上的循环,如果要在特定属性上应用逻辑,请使用PropertyName语句检查Binding protected override void OnBindingContextChanged(EventArgs e) { foreach (Binding item in DataBindings) { if (item.PropertyName == "SomeProperty") item.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged; } base.OnBindingContextChanged(e); } 1}}对象:

EndInit

作为应用此类自定义初始化任务的想法,您可以实现ISupportInitialize接口,并在function exec() { var name = 'answer'; var object_literal = { name: document.getElementById('TextBox1').value, street: document.getElementById('TextBox2').value, answer: name }; alert(object_literal.name); alert(object_literal.street); alert(object_literal.answer); } exec(); 方法中初始化完成时放置要应用的逻辑。