Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Visual Basic动态创建和擦除控件_Vb.net_Visual Studio_Visual Studio 2015 - Fatal编程技术网

Vb.net Visual Basic动态创建和擦除控件

Vb.net Visual Basic动态创建和擦除控件,vb.net,visual-studio,visual-studio-2015,Vb.net,Visual Studio,Visual Studio 2015,我在Visual Studio 2015中使用Visual Basic,我正在尝试单击条带菜单以显示一些文本框和按钮。 在条带菜单中再次单击后,我想删除它们并添加新的条带菜单。 我的问题是从我的界面中删除(删除或清除我的按钮和文本框)控件。 我试着用Button.Visible=True(或False)来做这件事,但在很多控件中,它似乎并没有真正的帮助 Private Sub ClassAToolStripMenuItem_Click(sender As Object, e As EventAr

我在Visual Studio 2015中使用Visual Basic,我正在尝试单击条带菜单以显示一些文本框和按钮。 在条带菜单中再次单击后,我想删除它们并添加新的条带菜单。 我的问题是从我的界面中删除(删除或清除我的按钮和文本框)控件。 我试着用Button.Visible=True(或False)来做这件事,但在很多控件中,它似乎并没有真正的帮助

Private Sub ClassAToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ClassAToolStripMenuItem.Click
    Label1.Text = "Sum A class Students: "

    Dim btnA As Button = New Button
    btnA.Location = New Point(420, 180)
    btnA.Name = "Btn1"
    btnA.Text = "OK"
    btnA.Visible = True
    Me.Controls.Add(btnA)
    AddHandler btnA.Click, AddressOf button
End Sub

Private Sub button()
    'What my Button does.
End Sub

我通过此代码动态创建我的按钮,但如果我想进入另一个菜单选项,我想删除此按钮以再次添加我的新控件(例如,我们的新按钮标签等)。

您的声明超出范围,因为您在菜单的单击方法中声明了它。您必须使用Find方法返回对所创建控件的引用:

Dim btn=Me.Controls.Find(“Btn1”,True).FirstOrDefault()
如果btn不是什么,那么
btn.Dispose()
如果结束
如果您试图用菜单单击上的新“屏幕”替换面板的内容,您可以尝试以下代码:

而Panel1.Controls.Count>0
Panel1.控件(0).Dispose()
结束时
将新控件设置为新用户控件1
newControl.Dock=DockStyle.Fill
Panel1.Controls.Add(新建控件)

不要标记人类已知的每一种VB语言。你能总结成一个问题吗?您可能还应该添加一些源代码。我发布我的代码是为了帮助您理解我的问题。如果您试图摆脱控制,请使用来清理它。别忘了删除您添加的处理程序。我试图使用btnA.Dispose()执行此操作,但我收到了此错误BC30451,它告诉我,我在btnA(我的按钮)中遇到了访问权限问题。@Nikoskoutos不确定这是什么意思。您的问题是关于处理动态创建的控件,因此我尝试向您展示这一点。如果您有很多控件,那么您应该创建包含控件集合的UserControls,您只需添加并处理这些控件。很抱歉,在我的代码中,我将使用此方法获取结果,因为我正在寻找一个从所有控件中清除表单的函数,我希望下一个事件将再次创建它。感谢您的时间。当我单击“我的条带菜单”时,我希望在同一表单中显示另一个曲面,但我不想创建新表单。这就是我尝试删除所有控件和新事件的原因(在我的例子中是一个新的条带菜单单击)创建新控件。@Nikoskoutatos然后在用户控件中创建这些屏幕,并根据需要显示和处理用户控件。我实际上想制作一个具有多个页面的软件。如果我在条带菜单中单击,则显示一个页面;如果我单击另一个,则显示另一个页面。