C# Winforms TabControl 元素读取为空,直到选择 TabPage

标签 c# winforms tabcontrol tabpage

我有一个用 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/

相关文章:

c# - 推荐的 c# winform 控件包

C# Winforms 透明控件允许点击

asp.net - 在按钮单击中启用和禁用 ajax tabcontainer 中的选项卡

.net - TabControl 标题的高度

c# - 如何在 ASP.NET 中使用 Exchange Web 服务下载未读的电子邮件附件?

c# - DataGridViewCell.FormattedValue 是如何更新的?

c# - 如何模拟 IDataReader 以测试将 SqlDataReader 转换为 System.DataView 的方法

c# - 使用 Asp.Net MVC 处理临时 session 数据

c# - 如何填充WebBrowser TextBox的?

WPF TabItem 内容对齐始终居中