首页 文章

在所有文本框实际填充之前,您是否必须显示每个选项卡?

提问于
浏览
0

我有一个vb.net表单,在多个不同的选项卡中使用多个文本框 . 在其中一个标签中,我有一组子标签 . 我的保存功能调用每个选项卡的存储过程,并循环显示每个页面上的值以进行更新或“添加新” . 我注意到,在测试时,某些页面不保存或更新文本框中的任何值 . 经过几天的调查,我意识到如果我编辑某些东西,然后通过物理点击其他标签,它们都会正确保存/更新 . 如果我不点击它们,它们并不是全部保存 . 这是否有理由让我失踪?当你输入一个搜索值时,我循环浏览这些页面并同时填充它们所以我假设它在物理渲染之前写了这些值......我想我错了?

1 回答

  • 1

    来自TabPage documentation Remarks section

    在显示选项卡页面之前,不会创建TabPage中包含的控件,并且在显示选项卡页面之前,不会激活这些控件中的任何数据绑定 .

    所以你的问题的答案是“是的,必须显示标签页” .

    但是,"shown"的定义有待解释 . 实际上,您需要做的就是将 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
    

相关问题