Announcement

Collapse
No announcement yet.

Rückgabewert im Event

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rückgabewert im Event

    Hallo!

    Gibt es eine Möglichkeit, in einem Event (z. B. ButtonClick o.ä.) einen Rückgabewert auszugeben?

    Hintergrund der Sache ist folgender:

    - ein Form zum Hinzufügen von Hardware
    - zweites Form zum Zuschlüsseln eines Benutzernamens

    Code:
    'Öffnet das Fenster zum Hinzufügen des Benutzers und gibt den
        'ausgewählten Wert zurück
        Public Function GetUserKuerzel()
    
            Dim userkuerzel As String
            Dim AddUserDialog As New dlgAddUserToHardware
    
            AddUserDialog.Show()
    
            userkuerzel = AddUserDialog.Controls("cmbSelectUser").Text
    
            Return userkuerzel
        End Function
    Der Benutzer soll dann in eine SQL-Insert-Abfrage zur Datenbank hinzugefügt werden.

    Wenn ich jetzt allerdings an den Platzhalter von "USERID" die Funktion GetUserKuerzel() schreibe, ist der Benutzer ja noch gar nicht ausgewählt!

    Heißt also, ich möchte folgendes verwirklichen:

    Code:
    'Möglichkeit der Hardware, falls es ein Computer ist, einen Benutzer zuzuweisen
        Private Sub cmdAddUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAddUser.Click
    
            Dim userkuerzel As String
            Dim AddUserDialog As New dlgAddUserToHardware
    
            AddUserDialog.Show()
    
            userkuerzel = AddUserDialog.Controls("cmbSelectUser").Text
    
            Return userkuerzel
    
        End Sub
    Weiß aber nicht mit den Parametern wohin. (Davon abgesehen hab ich keine Idee wozu sender und e da sind).

    Wäre nett wenn mir jemand helfen könnte :-)

  • #2
    Hallo,

    das e ist dazu da ;-)
    Schau mal in der MSDN unter EventHandler Of T.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Code:
      Gibt es eine Möglichkeit, in einem Event (z. B. ButtonClick o.ä.) einen Rückgabewert auszugeben?
      In einem eigenen Event würdest du das in den EventArgs zurückgeben und dann durch den Sender des Events auswerten. Ein fertiger Click Event eines Controls sieht das nicht vor.

      Ich habe auch nicht verstanden wie dir das hätte helfen sollte. Das cmdAddUser Control hat keine Ahnung von deinem Anwendungsfall was sollte es also mit deinem userkuerzel anfangen?

      Wenn du userkuerzel nach dem Event brauchst merkt dir den Wert in einer Klassenvariable.

      Comment


      • #4
        Hallo ihr.

        Ich habe es jetzt so gelöst:

        Code:
        Dim userkuerzel As String
            Private Sub cmdAddUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAddUser.Click
        
                'Öffnet das Fenster zum Hinzufügen des Benutzers
                Dim AddUserDialog As New dlgAddUserToHardware
        
                AddUserDialog.Show()
        
                userkuerzel = AddUserDialog.Controls("cmbSelectUser").Text
                MsgBox(userkuerzel)
        
            End Sub
        Es funktioniert auch (wer hätt's gedacth, wie einfach das ist ;-)).

        Aber mein Problem ist, dass er schon in den zuerst ausgewählten Wert in der Datenbank speichert. Ich möchte ja aber erst einen Wert auswählen und diesen dann in der Datenbank speichern.

        Ich müsste das also noch irgendwie mit einem ComboBox.HasChanges (falls es sowas gibt) verknüpfen.

        kann man das in einer If-Else-Anweisung formulieren?
        If ComboBox1.Haschanges gibt es ja nicht

        Comment


        • #5
          Würde noch das einbauen:
          Code:
                   If AddUserDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
                          userkuerzel = AddUserDialog.Controls("cmbSelectUser").Text
                  End If
          und im Userform zwei Buttons mit OK und Abbrechen. Bei OK dann im Form als DialogResult = OK und bei Abbrechen = DialogResult = Cancel...

          Dann kann der User im Falle, das er niemanden auswählen will, dies auch noch tun, indem er abbricht.

          Comment


          • #6
            Ich hab das jetzt mal ausprobiert. Leider wird in einer Test-MessageBox nichts angezeigt. Auch beim Debuggen ist kein Wert in der Variablen userkuerzel.

            Muss ich im anderen Form noch etwas anpassen? (z. B. in der Click-Methode)?

            Comment


            • #7
              Vielleicht mal dein Problem in seiner halbwegs zusammenhängenden Gänze erklären. Wir können dir gerade nicht über dir Schulter gucken und erkennen was du da tust.

              Du zeigst zwar Code aber erzählst was von Comboboxen und speichern in einer Datenbank. Zeigst aber nur einen Eventhandler der einen Wert in eine Variable schreibt. Da gibt es jetzt mal keinen logischen Zusammenhang der uns deinem Problem näher bringen würde.

              Comment


              • #8
                Ich versuch es ;-)

                1. Form: Hardware zu einer Datenbank hinzufügen
                • über ButtonClick wird 2. Form geöffnet


                2. Form: Benutzer zu entspr. Hardware hinzufügen
                • Benutzer in ComboBox auswählen
                • Wert in Variable speichern
                • Wert an 1. Form zurückgeben


                In der 1. Form wird die Verbindung zur Datenbank hergestellt und die Daten per Insert-Befehl geschrieben. Dies geschieht über die in Form1 angelegten Textfelder.

                Außerdem benötige ich, um den Benutzer direkt mit zuweisen zu können, den Wert der Variablen, die ich in Form2 (über ComboBox) ausgewählt habe.

                Code zum Öffnen des 2. Forms:
                Code:
                'Möglichkeit der Hardware, falls es ein Computer ist, einen Benutzer zuzuweisen
                    Dim userkuerzel As String
                    Private Sub cmdAddUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAddUser.Click
                
                        'Öffnet das Fenster zum Hinzufügen des Benutzers
                        Dim AddUserDialog As New dlgAddUserToHardware
                
                        If AddUserDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
                            userkuerzel = AddUserDialog.Controls("cmbSelectUser").Text
                            MsgBox(userkuerzel)
                        Else
                            MsgBox("geht nich")
                        End If
                Code im 2. Form:
                Code:
                'Variable, die Benutzerkürzel speichert, zurückgeben
                
                    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
                        Me.DialogResult = System.Windows.Forms.DialogResult.OK
                        Me.Hide()
                    End Sub
                Das heißt: Entweder Form2 gibt den Wert der Variablen zurück oder Form1 holt sich den Wert.

                Hoffe, es war verständlich

                Comment


                • #9
                  Also ich hab Dein Beispiel so komplett nachgebaut und es tut das, was es tun soll...

                  Hab auch keine Idee sonst...

                  Aber das Me.Hide() ist unnötig, kannste weglassen.


                  ps: Manipulierst Du in irgendeinem Ereignis das Value der Combobox? ... Vielleicht passiert da was ungewolltes....
                  Zuletzt editiert von Thomas Rith; 21.09.2010, 13:25. Reason: noch ne idee ^^

                  Comment


                  • #10
                    Hi.

                    Also...mhh...es funktioniert wohl. ^^

                    Danke an alle :-)

                    Comment


                    • #11
                      Bitte... ^^

                      Comment

                      Working...
                      X