Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Dynamic 如何删除按钮单击时的文本框(vb.net)?_Dynamic_Textbox_Runtime - Fatal编程技术网

Dynamic 如何删除按钮单击时的文本框(vb.net)?

Dynamic 如何删除按钮单击时的文本框(vb.net)?,dynamic,textbox,runtime,Dynamic,Textbox,Runtime,我不知道如何在我的Windows窗体中单击按钮删除文本框 以下是我的故事: 最初,我想点击一个按钮就添加文本框,搜索网络后,我就能够在这个论坛上找到如何做到这一点 我使用了用户“Rajaprabhu Aravindasam”(第二个答案)给出的代码。以下是我使用的代码的一部分(为了不让您感到困惑): 现在,如您所见,按钮“button_AddTask”(“我的表单上的“+”按钮)的用途是创建富文本框及其各自的标签。假设富文本框和标签是在彼此下方创建的 在“+”按钮旁边,有一个“-”按钮。我想用这

我不知道如何在我的Windows窗体中单击按钮删除文本框

以下是我的故事:

最初,我想点击一个按钮就添加文本框,搜索网络后,我就能够在这个论坛上找到如何做到这一点

我使用了用户“Rajaprabhu Aravindasam”(第二个答案)给出的代码。以下是我使用的代码的一部分(为了不让您感到困惑):

现在,如您所见,按钮“button_AddTask”(“我的表单上的“+”按钮)的用途是创建富文本框及其各自的标签。假设富文本框和标签是在彼此下方创建的

在“+”按钮旁边,有一个“-”按钮。我想用这个“-”按钮按顺序删除所有创建的文本框。也就是说,如果我用“+”按钮创建了4个文本框,文本框4号将在我单击“-”按钮时先删除,第二次单击后删除第3号,第三次单击后删除第2号,依此类推

顺序部分不是问题,我完全知道如何做。以下是我尝试的部分代码:

Private Sub Button_DeleteTask_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_DeleteTask.Click
    TabPage_TaskStructure.Controls.Remove(New Label() With _
                                       {.Name = "Label_Task" & count})
    TabPage_TaskStructure.Controls.Remove(New RichTextBox() With _
                                       {.Name = "RichTextBox" & count})

    count -= 1

    If count = 1 Then
        Button_DeleteTask.Visible = False
    End If
End Sub
从逻辑上讲,我所做的只是用“删除”替换“添加”,但我不知道用什么替换“新建”。所以我的问题是:需要用什么来代替“新建”?如果我需要使用完全不同的代码,请告诉我

非常感谢您的帮助

更新: 好的,自从我提出这个问题以来,我已经做了一些研究,并且我能够推断出可以通过使用For Each循环来删除控件(标签和富文本框)。在我的“-”按钮代码中,我用以下代码替换了前4行代码:

Dim Ctrl As Control
For Each Ctrl In TabPage_TaskStructure.Controls
    If TypeOf Ctrl Is Label And Ctrl.Name = "Label_Task" & count Then
       TabPage_TaskStructure.Controls.Remove(Ctrl)
    ElseIf TypeOf Ctrl Is RichTextBox And Ctrl.Name = "RichTextBox" & count Then
        TabPage_TaskStructure.Controls.Remove(Ctrl)
    End If
Next
因此,当我单击“-”按钮时,程序会检查选项卡页面(TabPage_TaskStructure)上的每个控件是一个名为(“label_Task”&count”)的标签还是一个名为(“RichTextBox”&count)的富文本框,如果是,它们将被删除。其余代码相同

它工作,但不完全。它的标签工作,因为他们正在成功地被删除,但不为富文本框。我不明白为什么。我已经尝试了其他控件的代码,如日期时间选择器和文本框,它不为任何这些工作。它似乎只为标签工作

此外,我还尝试在默认的富文本框上使用该代码,它成功了!但是对于在运行时创建的富文本框,它不起作用


有人能澄清一下吗?

我并不擅长vb,但从简单的逻辑来看,如果接受了“if”参数,代码将移到“End if”并跳过“Else”altoghter。 请尝试以下方法:

Dim Ctrl As Control
    For Each Ctrl In TabPage_TaskStructure.Controls
        If TypeOf Ctrl Is Label And Ctrl.Name = "Label_Task" & count Then
            TabPage_TaskStructure.Controls.Remove(Ctrl)
        End If
        If TypeOf Ctrl Is RichTextBox And Ctrl.Name = "RichTextBox" & count Then
            TabPage_TaskStructure.Controls.Remove(Ctrl)
        End If
Next
Dim Ctrl As Control
    For Each Ctrl In TabPage_TaskStructure.Controls
        If TypeOf Ctrl Is Label And Ctrl.Name = "Label_Task" & count Then
            TabPage_TaskStructure.Controls.Remove(Ctrl)
        End If
        If TypeOf Ctrl Is RichTextBox And Ctrl.Name = "RichTextBox" & count Then
            TabPage_TaskStructure.Controls.Remove(Ctrl)
        End If
Next