【问题标题】:Buttons with TabControl not Working带有 TabControl 的按钮不起作用
【发布时间】:2014-03-16 22:15:10
【问题描述】:

我在 Form1 中放置了 label1、richTextBox1、Button1 和 Button2; 然后我写了下面的代码;一切正常,除了 Button1 和 button2 不工作; 知道为什么吗?

Public Class Form1

Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged

    Select Case TabControl1.SelectedIndex
        Case 0 'first tab
            RichTextBox1.Clear() : RichTextBox1.AppendText("I'm on the first tab" & vbCrLf)
            '...
            With TabControl1.SelectedTab.Controls
                .Add(RichTextBox1)
                .Add(Label1)
                .Add(Button1)
            End With
        Case 1 'second tab
            RichTextBox1.Clear() : RichTextBox1.AppendText("Now; I'm on the Second tab" & vbCrLf)
            '...
            With TabControl1.SelectedTab.Controls
                .Add(RichTextBox1)
                .Add(Button2)
            End With
    End Select
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs)
    For s = 1 To 100
        RichTextBox1.AppendText(" Button1 - " & s & vbCrLf)
    Next
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs)
    For s = 1 To 100
        RichTextBox1.AppendText(" Button2 - " & s & vbCrLf)
    Next
End Sub

结束类

【问题讨论】:

  • 您的按钮有一个没有 Handles 关键字的 Click 事件处理程序。这意味着他们不会处理 Click 事件。您出错的第一个地方是将它们添加到表单中,然后在您的代码中将它们添加到标签页。将它们放在设计器的标签页上只是 方式 更容易。并双击该按钮以添加 Click 事件处理程序。现在将有 Handles 子句。很不清楚你为什么不这样做。查看您最喜欢的有关 AddHandler 语句的 VB.NET 书籍。

标签: vb.net button tabcontrol


【解决方案1】:

您的按钮单击处理程序似乎失去了与按钮的关联。要么复制粘贴代码而不连接处理程序,要么在对象的“事件”窗格中取消选择处理程序。只需将Handles 子句添加回如下:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For s = 1 To 100
        RichTextBox1.AppendText(" Button1 - " & s & vbCrLf)
    Next
End Sub

见:Handles Clause (MSDN)

顺便说一句,您还应该认真考虑在您的项目选项中启用 ON Option ExplicitOption Strict。这些可以关闭以与旧版 VB 代码兼容,但它们鼓励草率的代码,这可能会导致头痛和麻烦。使用这些选项,您的处理程序将如下所示:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim s As Integer   ' Option explicit - must declare all variables!
    For s = 1 To 100
        RichTextBox1.AppendText(" Button1 - " & s.ToString() & vbCrLf)
        ' Option strict -> no implicit casting of types (ie : int to string ^^)
    Next
End Sub

【讨论】:

  • 天啊,是的,J...你是对的;我错过了这个;非常感谢。
  • 感谢 J... 的建设性 cmets。我刚刚接受了你的回答。问候。
猜你喜欢
  • 2011-04-28
  • 2019-04-23
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
相关资源
最近更新 更多