Probier es mal so aus:
Erstell dir ein neues Projekt, und benenne dort die Form1 in frmMain um. Dann setz die Eigenschaft IsMdiContainer auf True.
Platziere ein MenuStrip1 auf deiner Form und leg dort den Menüpunkt Datei mit dem Untermenüpunkt Daten ... an.
Dann füge folgenden Code in diese frmMain ein.
Private Sub DatenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles DatenToolStripMenuItem.Click
'frmDaten aufrufen und den MDIParent auf frmMain setzen
Dim frmDaten As frmDaten
If frmDaten Is Nothing Then frmDaten = New frmDaten
frmDaten.MdiParent = Me
frmDaten.Show()
End Sub Erstelle dann eine Form mit dem Namen frmDaten, platziere eine Textbox mit dem Namen txtBerechnet und einen Button mit dem Namen btnBerechnen ein.
Dazu wieder folgenden Code in die frmDaten einfügen.
Private Sub btnBerechnen_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnBerechnen.Click
'frmBerechnen als Dialog aufrufen, dieser gibt dann nach einem Klick
' auf OK DialogResultOK zurück und wir wissen das der Benutzer auf OK
' geklickt hat und wir den Wert auslesen können.
Dim frmBerechnen As frmBerechnen
If frmBerechnen Is Nothing Then frmBerechnen = New frmBerechnen
If frmBerechnen.ShowDialog = Windows.Forms.DialogResult.OK Then
txtBerechnet.Text = frmBerechnen.Ergebnis.ToString
End If
End Sub Zum Schluss noch eine 3. Form erstellen mit dem Namen frmBerechnen und folgenden Steuerelementen. 3 Textboxen mit den Namen TextBox1, TextBox2, TextBox3 und 2 CommandButtons mit den Namen btnOK und btnCancel.
Dann noch folgenden Code in die frmBerechnen einfügen.
Private mErgebnis As Double
'Eigenschaft, in dem der berechnete Wert nach dem drücken auf OK
' gespeichert wird.
Public ReadOnly Property Ergebnis() As Double
Get
Return mErgebnis
End Get
End Property
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles TextBox1.TextChanged
Try
If TextBox1.Text = "" Or TextBox2.Text = "" Then
Else
TextBox3.Text = CDbl(TextBox1.Text) * CDbl(TextBox2.Text)
End If
Catch
End Try
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles TextBox2.TextChanged
Try
If TextBox1.Text = "" Or TextBox2.Text = "" Then
Else
TextBox3.Text = CDbl(TextBox1.Text) * CDbl(TextBox2.Text)
End If
Catch
End Try
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnCancel.Click
'nichts in das Feld Ergebnis eintragen, da ja Wert nicht übernommen
' werden soll
'Cancel an frmDaten zurückgeben.
Me.DialogResult = Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnOK.Click
'Benutzer hat OK geklickt also Wert in Property eintragen und OK
' zurückgeben an frmDaten.
mErgebnis = CDbl(TextBox3.Text)
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub Die genaue Beschreibung wie das mit den Properties und dem übergeben von Werten an diese funktioniert steht ja schon irgendwo hier im Beitrag. Zumindest denke ich das da ein Link zu einem Beitrag war, den ich zu diesem Thema schonmal verfasst habe.
Ist jetzt sehr vereinfacht, man könnte natürlich auch in der frmBerechnen im Form_Load Ereignis den aktuellen Wert auch wieder auslesen. Dazu müsste das ReadOnly weg und der Wert bevor man frmBerechnen anzeigt an frmBerechnen.Ergebnis übergeben werden. Dann kann die Form mit ShowDialog angezeigt werden und man kann in dieser im Form_Load Ereignis dann den Wert von Ergebnis wieder in TextBox3 schreiben. Aber das kann man ja dann ausbauen wie man will.
Hoffe mal das sich kein Fehler eingeschlichen hat. Wurde gestern etwas länger.
Christain25 |