您是不是必须在所有文本框实际填充之前显示每个选项卡?
Posted
技术标签:
【中文标题】您是不是必须在所有文本框实际填充之前显示每个选项卡?【英文标题】:Do you have to show every tab before all textboxes actually populate?您是否必须在所有文本框实际填充之前显示每个选项卡? 【发布时间】:2018-04-30 21:36:25 【问题描述】:我有一个 vb.net 表单,它在多个不同的选项卡中使用多个文本框。在其中一个选项卡中,我有一组选项卡。我的保存功能为每个选项卡调用存储的过程,并循环浏览每个页面上的值以进行更新或“添加新”。我注意到在测试时,某些页面不会保存或更新文本框中的任何值。经过几天的调查,我意识到如果我编辑某些内容,然后物理单击其他选项卡,它会正确保存/更新。如果我不点击它们,它们不会全部保存。我失踪有什么原因吗?当您输入搜索值时,我会循环浏览页面并同时填充它们,所以我假设它在物理呈现之前写入了这些值......我想我错了吗?
【问题讨论】:
文本框是否通过数据绑定填充? 是的,在所有选项卡上。 【参考方案1】:来自TabPage documentation Remarks section
在标签页显示之前不会创建 TabPage 中包含的控件,并且在显示标签页之前不会激活这些控件中的任何数据绑定。
所以您的问题的答案是“是的,必须显示标签页”。
但是,“显示”的定义有待解释。实际上,您只需将TabPage.Visible
属性设置为True
,而不是实际循环显示每个TabPage
。
对TabPage
控件的表单进行递归扫描将起作用:
Private Shared Sub TabPagesVisible(parent As Control)
For Each c As Control In parent.Controls
If TypeOf c Is TabPage Then c.Visible = True
TabPagesVisible(c)
Next
End Sub
示例用法:
Sub SaveFormTabData()
TabPagesVisible(Me) ' Me refers to the containing form
' code to save control data
End Sub
【讨论】:
以上是关于您是不是必须在所有文本框实际填充之前显示每个选项卡?的主要内容,如果未能解决你的问题,请参考以下文章