【问题标题】:Vb-net Hide layout on prepare the formVb-net 在准备表格时隐藏布局
【发布时间】:2019-09-13 08:26:28
【问题描述】:

Visual Studio 2019,Visual Basic。

我有一个表格。在加载时我添加了很多文本框。在这个过程中我需要隐藏布局。我试试:

Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.SuspendLayout()
    MakePanel() ' Sub adding textbox  
    Me.ResumeLayout(False)
    Me.PerformLayout()
End Sub

但它显示了所有过程。我试试

Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.Panel1.visible = false
    MakePanel() ' Sub adding textbox  
    Me.Panel1.visible = true
End Sub

但是什么都没有……

【问题讨论】:

  • 我发现这个stackoverflow.com/questions/13122994/… 现在我测试了
  • 这是程序中的一个非常讨厌的错误,当 Load 事件运行时,窗口必须不可见。这是可能的,但猜测不太可能让你继续前进。这种代码属于构造函数(Sub New),瞄准那里也增加了发现bug的几率。

标签: vb.net winforms


【解决方案1】:

我没有代表发表评论,但您的第二次尝试是正确的。问题可能在于您的MakePanel() 函数实际上并未在Panel1 的控件中添加所有文本框,而是作为表单本身的一部分。因此,当您隐藏面板时,它不会隐藏其中的文本框。

需要通过Panel1.Controls.Add 添加它们才能真正使用Panel1“隐藏”

ie(从一个新的空白表格开始):

    Public Panel1 = New Panel()
    Public TextBox1 = New TextBox()
    Public TextBox2 = New TextBox()

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Controls.Add(Panel1)
        Panel1.Visible = False
        MakePanel()
        Panel1.Visible = True
    End Sub

    Private Sub MakePanel()
        Panel1.Location = New Point(3, 3)
        Panel1.Name = "Panel1"
        Panel1.Size = New Size(100, 100)
        Panel1.TabIndex = 0
        TextBox1.Location = New Point(3, 3)
        TextBox1.Name = "TextBox1"
        TextBox1.Size = New Size(49, 20)
        TextBox1.TabIndex = 0
        Panel1.Controls.Add(TextBox1)
        TextBox2.Location = New Point(3, 29)
        TextBox2.Name = "TextBox2"
        TextBox2.Size = New Size(49, 20)
        TextBox2.TabIndex = 1
        Panel1.Controls.Add(TextBox2)
    End Sub    

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 2014-02-02
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    相关资源
    最近更新 更多