【问题标题】:How to automatically set DataSourceUpdateMode in the designer?如何在设计器中自动设置 DataSourceUpdateMode?
【发布时间】:2016-03-12 14:29:27
【问题描述】:

我有一个具有双向可绑定属性的自定义控件。我还在值的设置器上引发了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 是更合适的事件?

【问题讨论】:

    标签: c# winforms data-binding


    【解决方案1】:

    OnCreateControl没用,OnBindingContextChanged更适合换DataBindings。此外,您应该使用DataBindings 上的循环而不是DataBindings[0],如果您想在特定属性上应用逻辑,请使用if 语句检查PropertyNameBinding 对象:

    protected override void OnBindingContextChanged(EventArgs e)
    {
        foreach (Binding item in DataBindings)
        {
            if (item.PropertyName == "SomeProperty")
                item.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
        }
        base.OnBindingContextChanged(e);
    }
    

    作为应用此类自定义初始化任务的一个想法,您可以实现ISupportInitialize 接口并将初始化完成时要应用的逻辑放在EndInit 方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2021-09-22
      • 2011-06-03
      相关资源
      最近更新 更多