VB.NET Me.Close()不起作用,表单不关闭?

时间:2009-04-16 11:06:00

标签: vb.net

表单是关于我们表单,因此没有任何内容只有文本框和确定按钮。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Me.Close()
End Sub

以下是我打开表单的方式:

Private Sub AboutAppStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutAppStripMenuItem.Click
    Dim formAbout As New FormAbout()
    formAbout.Show()
End Sub

为什么按钮不会关闭表格?我很困惑,我尝试了另一个按钮以防万一,结果相同。

更新:我在Me.Close()上设置了一个断点,当我点击按钮时它没有到达它,我创建了一个新按钮,同样的事情发生了。

由于

6 个答案:

答案 0 :(得分:2)

我打赌,无意中删除了button1_click事件的事件处理程序。

尝试在设计时双击该按钮,看看它是否会将您拉回到同一段代码 - 或新的事件处理程序定义。

如果是新的事件处理程序定义 - 将代码复制到那里并删除第一个。

还有其他方法可以在设计人员的代码隐藏中手动添加事件处理程序 - 但这可能是为了以后的进展。

在VS中,单击解决方案资源管理器中的“显示所有文件”按钮。抓住.Designer.vb中的代码并将其粘贴到此处,我们将最终为您确定。

这是我的:


    Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
    Inherits System.Windows.Forms.Form

    'Form overrides dispose to clean up the component list.
     _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
     _
    Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(131, 91)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(133, 50)
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "Button1"
        Me.Button1.UseVisualStyleBackColor = True
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.Add(Me.Button1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub
    Friend WithEvents Button1 As System.Windows.Forms.Button

End Class

答案 1 :(得分:0)

来自MSDN:

  

显示控件等效于将Visible属性设置为true。调用Show方法后,Visible属性返回值true,直到调用Hide方法。

答案 2 :(得分:0)

当formabout打开时

点击visual studio中的暂停(全部中断)按钮

点击Visual Studio中的调试步骤

点击formabout中的关闭按钮

您将看到执行了哪些代码

*编辑*

另一个问题

是formbout.enabled属性是真的吗?

答案 3 :(得分:0)

我测试了以下

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) _
                          Handles Button1.Click
    Dim f As New Form2
    f.Show()
End Sub
End Class


Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) _
                          Handles Button1.Click
    Me.Close()
End Sub
End Class

并没有问题。按照建议,重新创建按钮和代码。

答案 4 :(得分:0)

添加按钮动态可以解决问题。 将以下代码放在about Form。的加载事件中。

Public Sub FormAbout_Load(ByVal sender as object,ByVal e as System.EventArgs)Handles Me.Load

Dim btn as new Button()
AddHandler btn.Click ,AddressOf _ClickToClose 

End Sub 

Private Sub _ClickToClose(ByVal sender as object,ByVal e as System.EventArgs)
  Me.Close()
End Sub

答案 5 :(得分:0)

简单。

  1. 从解决方案资源管理器中选择项目属性。
  2. 选择“安全”选项卡以取消选中“启用ClickOnce ...”或选择“这是一个完整的信任应用程序”。
  3. 保存属性设置。
  4. 解决。