vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: huber4
Datum: 14.06.12 10:14

Hallo,

hab da wiedermal ein Problem. Und zwar habe ich mehrere Hauptforms (frmUser,frmCity,...) von welchem ich bei einem ButtonClick ein zweites Form öffne:

- Rechtsklick in frmUsers öffnet frmRightClick
- Rechtsklick in frmCitys öffnet auch frmRightClick

In diesem 2. Fenster kann man nun Einstellungen für die Textboxen vom aufrufenden Fenster machen.

Ok, wenn ich dann auf "Speichern" im 2. Fenster klicke, sollten die Werte und Einstellungen für das aufrufende Fenster übernommen werden und da ist jetzt mein Problem: Wie spreche ich die Textboxen auf dem aufrufenden Fenster an? Ich weiss ja nicht, von welchem der User das frmRightClick geöffnet hat?

Ich weiss, dass es mit Formname.Textbox.Einstellung funktioniert, jedoch habe ich ja keine fixe Form von den das 2. Fenster aufgerufen wird, sonder es kann frmUsers,frmCitys,..... sein.

Muss ich da in den Hauptformen was instanzieren und an das 2.Form weitergeben oder wie macht man das am besten?

Hoffe ihr könnt mir da weiterhlefen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: Manfred X
Datum: 14.06.12 11:05

Hallo!

Übliche Strategie:

Du erstellst in der "Form2" (Dialog?, "frmRightClick" -> unsinnige Bezeichnung!)
Properties für die Einstellungen, die an von der jeweils rufenden Form abgefragt werden
sollen. In dieser Form2 werden die Werte in den vom User gefüllten Texteigenschaften der
Controls z.B. auf die Membervariablen dieser Einstellungen z.B. bei Betätigung
eines OK-Buttons eingetragen.

Das rufende Formular fragt nach Beendigung des Dialogs (der per ShowDialog der
Form2 geöffnet worden ist) diese Eigenschaften ab.
(Ein Zugriff vom untergeordneten Formular auf das rufende Formular ist
zu vermeiden.)

Keine Defaultinstanzen verwenden (!!), sondern in frmUsers und frmCities jeweils
eine Instanz explizit ersellen: Dim MyRightclick as New frmRightClick
oder per Property die Instanz von frmRightClick (Referenz) an ein anderes
Formular weiterreichen.

MfG
Manfred

Beitrag wurde zuletzt am 14.06.12 um 11:06:09 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: huber4
Datum: 14.06.12 12:27

Ok, erstmal danke.

Könntest du mir dazu einen Beispielcode geben was ich in den Hauptformen bzw. in der Unterform schreiben muss, wen ich z.B. den TabIndex einer Textbox vom Form frmUser verändern will, dieser aber im frmRightClick geändert wird, wie ich den Wert wieder zurückgebe, dass die Textbox auch den TabIndex hat?

Mfg
huber4
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: Manfred X
Datum: 14.06.12 12:59

Hallo!

Benenne Formulare nach ihrer Funktion - hier z.B. frmSettingsDialog
Public Class frmSettingsDialog
 
    'Membervariable 
    Private Property _TB_Tabindex As Integer
    'Per Code erstellte Controls
    Private WithEvents txtTabindex As New TextBox _
         With {.Parent = Me, .Top = 10, .Left = 10, .Width = 100}
 
    Private WithEvents btnOk As New Button With _
        {.Parent = Me, .Top = 40, .Left = 10, .Text = "OK", _
         .DialogResult = DialogResult.OK}
 
    Private WithEvents btnCancel As New Button With _
        {.Parent = Me, .Top = 40, .Left = 100, .Text = "Cancel", _
         .DialogResult = DialogResult.Cancel}
 
    'Eigenschaft für Tabindex
    Public Property TB_Tabindex As Integer
        Set(ByVal value As Integer)
            _TB_Tabindex = value
            txtTabindex.Text = CStr(value)
        End Set
        Get
            Return _TB_Tabindex
        End Get
    End Property
 
    'Schließen des Formulars durch den User verhindern 
    Private Sub frmSettingsDialog_FormClosing(ByVal sender As Object, _
       ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles _
       Me.FormClosing
 
        If e.CloseReason = CloseReason.UserClosing Then
            Me.Hide()
            e.Cancel = True
        End If
    End Sub
 
    'Eingabe kontrollieren
    Private Sub txtTabindex_TextChanged(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles txtTabindex.TextChanged
 
        If txtTabindex.Text <> String.Empty Then
            Dim index As Integer
            If Not Integer.TryParse(txtTabindex.Text.Trim, index) OrElse index _
              < 0 Then
                MsgBox("Unzulässige Eingabe")
            Else
                _TB_Tabindex = index
            End If
        End If
 
    End Sub
End Class
Verwendung des Dialogs:
Public Class frmUser
 
    Dim mySettingsDialog As New frmSettingsDialog With _
      {.Owner = Me, .Visible = False}
    Dim WithEvents btnSettingsDialog As New Button With _
        {.Parent = Me, .Top = 10, .Left = 10, .Width = 100, .Text = "Settings"}
 
    Dim txtDemo As New TextBox With _
        {.Parent = Me, .Top = 40, .Left = 10, .Width = 300}
 
 
    Private Sub btnSettingsDialog_Click(ByVal sender As Object, _
       ByVal e As System.EventArgs) Handles btnSettingsDialog.Click
 
        With mySettingsDialog
            .TB_Tabindex = txtDemo.TabIndex
            If .ShowDialog = DialogResult.OK Then
                txtDemo.TabIndex = .TB_Tabindex
            End If
        End With
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: huber4
Datum: 14.06.12 14:13

Super Sache, danke dir ;)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: Micke
Datum: 14.06.12 14:48

Zitat:


(Ein Zugriff vom untergeordneten Formular auf das rufende Formular ist
zu vermeiden.)


jup, aber aus meiner Sicht ist hier die Ausnahme.

@Huber - übergib gleich die Textboxen an dein Konfigfenster.

Micke

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: Manfred X
Datum: 14.06.12 14:57

Hallo!

Begründung?
Woher willst Du wissen, dass eine im Dialog
abgefragte Eigenschaft sich auf eine Textbox bezieht?
Viele Eigenschaften sind von Control abgeleitet.
Eine abgefragte Eigenschaft kann sich in manchen rufenden
Formularen auf eine oder auch mal auf 5 Controls beziehen.
Du bringt hier unnötig eine Starrheit rein.
Nur im rufenden Formular (unterschiedliche Klassen!!) ist bekannt,
wie die Dialogrückgabe zu verwerten ist.
Mein Beispiel ist ein allgemein verwendbares Code-Gerüst.

MfG
Manfred

Beitrag wurde zuletzt am 14.06.12 um 15:04:21 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: ModeratorFZelle (Moderator)
Datum: 14.06.12 15:31

Das ist immer der falsche weg.
Die aufgerufene Form sollte niemals die aufrufende kennen.
Entweder man macht es wie Manfred sagt per properties oder per event.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: Micke
Datum: 14.06.12 16:58

sein subfenster ist anscheinend sowas wie ein propertygrid für textboxen.
wie die einstellungen dort gesetzt werden, ob für alle controls oder jeweils, kann er ja machen wie er lustig ist.

"Nur im rufenden Formular (unterschiedliche Klassen!!) ist bekannt,
wie die Dialogrückgabe zu verwerten ist. "
das wissen wir eben nicht, das weiß eigentlich nur der anwender im editorfenster, ob er alle meint oder nur einzelne.

Micke

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: Micke
Datum: 14.06.12 17:06

"Die aufgerufene Form sollte niemals die aufrufende kennen. "
er soll auch nicht den container übergeben. er soll genau das übergeben was editiert werden soll, in seinem fall textboxen.
ob nun einzeln oder als collection.

Micke

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Hauptform ist variabel -> Wie aus 2. Form ansprechen? 
Autor: ModeratorFZelle (Moderator)
Datum: 14.06.12 21:45

Das ist der falsche weg.

UI Elemente sollten niemals übergeben werden, sondern wenn dann Daten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel