2009-04-16 12 views
1

Das Formular ist ein Über uns Formular also hat nichts darauf nur ein Textfeld und eine OK-Taste.VB.NET Me.Close() funktioniert nicht, das Formular schließt nicht?

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

Hier ist, wie ich die Form bin Eröffnung:

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 

Warum wird nicht die Taste, um das Formular schließen? Ich bin verwirrt, ich habe einen anderen Knopf ausprobiert, nur für den Fall mit dem gleichen Ergebnis.

UPDATE: Ich habe einen Unterbrechungspunkt auf Me.Close() gesetzt und es erreicht es nicht, wenn ich auf die Schaltfläche klicke, ich habe eine neue Schaltfläche erstellt und das gleiche ist passiert.

Dank

+0

Welcher Code ist nach formabout.show? – Fredou

+0

Bearbeitet, um anzuzeigen, dass nach formabout.show kein Code vorhanden ist. – Scott

+0

Haben Sie vielleicht den Namen von button1 geändert? Das würde die Ereignisverdrahtung brechen ... –

Antwort

0

Von MSDN:

die Kontrolle Angezeigt entspricht die Visible-Eigenschaft auf true setzen. Nachdem die Methode Show aufgerufen wurde, gibt die Visible-Eigenschaft den Wert true zurück, bis die Methode Hide aufgerufen wird.

+1

Spineless Downvoters, die es nicht mit einem Kommentar unterstützen, warum ... –

2

Ich wette, der Ereignishandler für das Ereignis button1_click wurde versehentlich entfernt.

Versuchen Sie, in der Entwurfszeit doppelt auf die Schaltfläche zu klicken, und sehen Sie, ob es Sie zu genau demselben Code zurückbringt - oder zu einer neuen Event-Handler-Definition.

Wenn es eine neue Event-Handler-Definition ist - kopieren Sie Ihren Code dort und löschen Sie den ersten.

Es gibt andere Möglichkeiten, den Ereignishandler manuell im Code-Behind des Designers hinzuzufügen - aber vielleicht ist das für einen späteren Fortschritt.

In VS klicken Sie auf die Schaltfläche "Alle Dateien anzeigen" im Lösungsexplorer. Nimm uns den Code in .Designer.vb und füge ihn hier ein und wir werden ihn definitiv für dich finden.

Hier ist meins:


    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 
+0

Griff-Schlüsselwort ist in Frage oben – Fredou

0

wenn formabout offen ist

, klicken Sie auf Pause (Pause alle), um in Visual Studio

Klick auf Schritt in die im Debug in Visual Studio

Klicken Sie auf die Schließen-Schaltfläche in formabout

y ou sehen, welcher Code ausgeführt wird, wenn überhaupt

* edit *

eine andere Frage

ist formabout.enabled Eigenschaft wahr ist?

0

Getestet habe ich die folgende

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 

und Probleme nicht haben. Wie bereits vorgeschlagen, erstellen Sie Ihren Button und Code neu.

0

Hinzufügen Sie Button Dynamisch kann das Problem lösen. Fügen Sie den folgenden Code in das Load-Ereignis von Form ein.

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 
0

Einfach.

  1. Wählen Sie Projekteigenschaften im Projektmappen-Explorer.
  2. Wählen Sie die Registerkarte Sicherheit, um die Option "ClickOnce aktivieren ..." zu deaktivieren, oder wählen Sie "Dies ist eine Voll vertrauenswürdige Anwendung".
  3. Speichern Sie die Eigenschafteneinstellungen.

Gelöst.