Visual Basic - 按钮不激活代码?

时间:2015-08-04 10:37:38

标签: vb.net

我在制作一个简单的VB程序工作时遇到了很多问题,但最终使代码工作,然后解决方案文件被破坏,所以我不得不重新开始。幸运的是,我在txt文件中保存了很多代码!

我已经重新创建了表单并在其后面添加了代码,但是当我点击任一按钮时,没有任何反应?但是,当我使用复选框将窗口保持在最上面时,它会起作用。

我可以确认按钮名为GoBut和ButNew,文本框在表单设计中称为TextCode,第二种形式称为NewDesign。

请帮助,我希望我错过了一些愚蠢而简单的事情!

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub chkTopmost_CheckedChanged(ByVal sender As  _
       System.Object, ByVal e As System.EventArgs) Handles chkTopmost.CheckedChanged
    Me.TopMost = chkTopmost.Checked
End Sub

Private Sub GoBut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Dim wdcode As String
    wdcode = TextCode.Text

    Dim wd_wild As String
    wd_wild = "*"

    Dim wd_full As String
    wd_full = wd_wild & wdcode

    Dim found As String = My.Computer.FileSystem.GetDirectories("Y:\Sample Code Sequence\", FileIO.SearchOption.SearchAllSubDirectories, wd_full).FirstOrDefault()

    MsgBox(wd_full, MsgBoxStyle.OkOnly, "Found Directory")

    Process.Start("explorer.exe", String.Format("/n, /e, {0}", found))
End Sub
Friend WithEvents Button1 As System.Windows.Forms.Button

Private Sub ButNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    NewDesign.Show()
End Sub


End Class

4 个答案:

答案 0 :(得分:1)

您必须将Handler添加到您的方法中。结果是:

Private Sub GoBut_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles GoBut.Click

    Dim wdcode As String
    wdcode = TextCode.Text

    Dim wd_wild As String
    wd_wild = "*"

    Dim wd_full As String
    wd_full = wd_wild & wdcode

    Dim found As String = My.Computer.FileSystem.GetDirectories("Y:\Sample Code Sequence\", FileIO.SearchOption.SearchAllSubDirectories, wd_full).FirstOrDefault()

    MsgBox(wd_full, MsgBoxStyle.OkOnly, "Found Directory")

    Process.Start("explorer.exe", String.Format("/n, /e, {0}", found))
End Sub

答案 1 :(得分:0)

Drarig29的回答是......如果另一方面你希望在运行时添加和删除处理程序(你可能不会 - 你需要一个很好的理由去做) ,您应该查看AddHandler和RemoveHandler语句。

关于你在评论中提出的问题:

Friend WithEvents Button1 As System.Windows.Forms.Button 

这是声明一个按钮,支持事件(没有多少点没有!),这对于同一个程序集中的其他代码是可见的。

答案 2 :(得分:0)

这些都是很好的答案。另外,请记住,如果您创建一个按钮并为其设置handle子句;最好不要重命名它或尝试创建一个新按钮并将其命名为旧按钮。如果程序不是原始按钮或名称已更改,程序通常不会知道您是否要运行该按钮的处理代码。除非您从后面的代码创建它们,否则最好在创建事件之前将您的设计置于原石之中。

答案 3 :(得分:0)

如上所述,缺少Handles条款。解决问题区域的两条线索:一,您的新事件名称为例如Form1_Load后的“1”。第二步,将光标放在subs之间,打开右上角方法/属性的下拉列表。你会看到一堆曾经是事件的潜艇。您可以添加相应的句柄...或将代码复制到新的空事件子站中。