何时获胜表格控制数据绑定?

时间:2011-05-31 18:37:24

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

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

2 个答案:

答案 0 :(得分:1)

我有完全相同的问题,每当我想从unnanvigated tabpages中读取组合框默认值时返回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

答案 1 :(得分:0)

这是因为选项卡控件在被选中之前未被“初始化”。解决方法是将tabcontrol子类化,并在添加标签页时“初始化”标签页。有关详细信息,请参阅Does data binding work on invisible control?