【问题标题】:When are win form controls data bound?win表单控件什么时候绑定数据?
【发布时间】:2011-05-31 18:37:23
【问题描述】:

我在 Windows 窗体上的选项卡控件中有一堆控件。一些控件是数据绑定的。我正在尝试访问控件的值,但某些控件似乎没有值,直到我实际导航到具有控件的表单。控件数据何时绑定?在实际设置值之前必须先显示它们吗?

【问题讨论】:

    标签: c# winforms visual-studio-2008 data-binding


    【解决方案1】:

    我遇到了同样的问题,每当我想从未导航的标签页中读取组合框默认值时返回 null,并且我发现在控制显示之后发生数据带, 而我所做的,就是写这个函数

    protected virtual void SetComboData(System.Windows.Forms.Control parentCtrl, DataRow r)
    {
        foreach (System.Windows.Forms.Control ctrl in parentCtrl.Controls)
        {
            if (ctrl is ComboBox)
                if ((ctrl as ComboBox).DataBindings.Count != 0)
                    (ctrl as ComboBox).SelectedValue = r[(ctrl as ComboBox).DataBindings[0].BindingMemberInfo.BindingMember];
            if (ctrl is TextBox)
                if ((ctrl as TextBox).DataBindings.Count != 0)
                    (ctrl as TextBox).Text = r[(ctrl as TextBox).DataBindings[0].BindingMemberInfo.BindingMember].ToString();
            SetLecData(ctrl, r);
        }
    }
    

    我在保存数据集之前调用了该函数

     SetComboData(tabControl1, MyDataSet.Table["MyTable"]);//for tabcontrol
    

    【讨论】:

    • 有什么办法可以在绑定之前显示控件?
    【解决方案2】:

    这是因为选项卡控件在被选中之前不会“初始化”。解决方法是对 tabcontrol 进行子类化,并在添加标签页时“初始化”标签页。详情请见Does data binding work on invisible control?

    【讨论】:

      猜你喜欢
      • 2013-02-09
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 2011-01-08
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多