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