我有一个用 C# 编写的 Winform 应用程序。在我的表单上,我有一个包含七个页面的 TabControl,每个页面都充满了元素(主要是 TextBoxes 和 DropDownLists)。我使用 DataReader 提取一些信息,填充 DataTable,然后使用元素的 DataBindings.Add 方法用当前值填充这些元素。
用户可以在这些元素中输入数据,按“保存”,然后我使用元素的文本字段设置更新查询的参数。例如:
updateCommand.Parameters.Add("@CustomerName", SqlDbType.VarChar, 100).Value = CustomerName.Text;
我遇到的问题是,一旦我加载表单,所有元素显然都被认为是空的,直到我手动选择每个选项卡。因此,如果我在加载表单后立即按“保存”,则 TabPages 上我尚未选择的所有字段都会尝试使用空数据进行更新(不好)。当我选择每个 TabPage 时,这些元素现在将正确发送它们的数据。目前,我已经制定了一个(非常)丑陋的解决方法,我在第一次填充数据时以编程方式选择每个 TabPage,但这是一个 Not Acceptable 长期解决方案。
我的问题是,如何让 TabPage 上的所有元素在用户选择 TabPage 之前正确返回它们的数据?
最佳答案
何是正确的;在选择 TabPage 之前,不会创建 TabPage 上的元素。我刚刚在表单加载时添加了一个循环来选择每个 TabPage,现在它工作正常。
foreach (TabPage tp in tabControl1.TabPages)
{
tp.Show();
}
关于C# Winforms TabControl 元素读取为空,直到选择 TabPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678184/