Per Button_Click weiteren Button anzeigen und dessen Button_Click anpassen

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Pentagon.

    Per Button_Click weiteren Button anzeigen und dessen Button_Click anpassen

    Hallo erstmal,

    bin der Neue! ^^ Arbeite derzeit an einem kleinen Lernprogramm und komme bisher eigentlich mit Google recht gut klar... Nur diese eine Frage bekomm ich bei dem Onkel einfach nicht beantwortet, oder zumindest nicht so das ich es verstehe. Kann natürlich auch sein das ich nach den falschen Begriffen oder Ausdrücken suche...

    Ich versuch mal mein Problem zu Schildern

    Ich habe diesen Button

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. PictureBox2.Image = My.Resources.image
    3. PictureBox3.Image = My.Resources.image1
    4. Label2.Text = "Text"
    5. Label3.Text = "Subtext"
    6. Label4.Text = "SubSubtext"
    7. PictureBox4.Show()
    8. RichTextBox1.Show()
    9. RichTextBox1.LoadFile("Resources\Textmaterial\inhalt.rtf")
    10. Button2.Show()
    11. End Sub


    Und der durch den Click angezeigt Button2 soll sein Click Event erst durch den Button1_Click erhalten. Der Button2 soll eine "Detailansicht" bei Click öffnen, da diese je nach Inhalt natürlich auch eine andere Detailansicht sein könnte, wollte ich diese so festlegen.

    Ich hoffe ich konnte mein Problem verständlich erklären. Für Fragen stehe ich natürlich gerne zur Verfügung

    Grüße

    Aerosol
    Willkommen im Forum! :)

    Aerosol schrieb:

    VB.NET-Quellcode

    1. PictureBox4.Show()
    2. RichTextBox1.Show()
    3. Button2.Show()


    Was soll das bedeuten? Meinst du

    VB.NET-Quellcode

    1. Button2.Visible=True

    ?

    Und der durch den Click angezeigt Button2 soll sein Click Event erst durch den Button1_Click erhalten. Der Button2 soll eine "Detailansicht" bei Click öffnen, da diese je nach Inhalt natürlich auch eine andere Detailansicht sein könnte, wollte ich diese so festlegen.


    Das konnte ich jetzt allerdings nicht verstehen, kannst du bitte nochmal erklären?
    Hey,

    Erster Punkt als kleine Verbesserung: Benenne deine Controls sinnvoll z.B.: lblSubSubText, etc. Zudem würde ich hier eher zu Label1.Visible = True tendieren. (Standardmäßig im Designer auf False setzten)
    Und zum Verständnis, möchtest du nun den Button2 mit deinem ersten aktivieren oder willst du gleichzeitig den Button2 sichtbar machen oder "ausführen" ?

    Gruß

    [EDIT]: Oh tut mir Leid sonne75. Hab deinen Beitrag nicht gesehen. ;(
    Youtube Info Library 2013 jetzt im Showroom.
    Ich würde gerne Button2 erst sichtbar machen und dann

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    2. Form2.Show()
    3. End Sub


    Die Zeile die Form2 öffnet, eben anpassen.

    Mhh eventuell anders

    • Menupunkt1 (Button2_Click = Details.Menupunkt1.Show() )
    • Menupunkt2 (Button2_Click = Details.Menupunkt2.Show() )
    • Menupunkt3 (Button2_Click = Details.Menupunkt3.Show() )
    Also nicht das ich da in dem Beispiel jetzt 3 Buttons aufeinander legen muss ^^

    Aerosol schrieb:

    Ich würde gerne Button2 erst sichtbar machen

    Das geht mit

    sonne75 schrieb:

    VB.NET-Quellcode

    1. Button2.Visible=True


    Aerosol schrieb:

    Form2.Show()

    Dazu bitte hier lesen (Form2 ist eine Klasse und kein Objekt dieser Klasse):
    [VB 2010] Instanziierung von Forms und Aufruf von Dialogen

    Aerosol schrieb:


    VB.NET-Quellcode

    1. Menupunkt1 (Button2_Click = Details.Menupunkt1.Show() )
    2. Menupunkt2 (Button2_Click = Details.Menupunkt2.Show() )
    3. Menupunkt3 (Button2_Click = Details.Menupunkt3.Show() )

    Das verstehe ich leider gar nicht.

    One-Soft schrieb:

    Oh tut mir Leid sonne75. Hab deinen Beitrag nicht gesehen. ;(

    Wieso leid? Ich habe kein Monopol auf diesen Thread, nur weil ich als Erste geantwortet habe. ;)
    Ahhhhh... Ok ich versuch mal mit Worten xD

    Also ich hab Links in der Anwendung ein Menü da können dann Bereiche ausgewählt werden. Bei Klick auf einen Menüpunkt wird rechter Hand im Form eben die RichTextBox angezeigt lädt den entsprechenden Inhalt, zeigt den Titel und ggf. Subtitel. Und einen Button "Weitere Details" dieser Button verweisst auf ein weiteres Form welches die Details zu dem jeweiligen Inhalt enthält.

    Deshalb müsste dieser Button quasi mit dem entsprechenden Detail Form hinterlegt werden.

    Aerosol schrieb:


    Und der durch den Click angezeigt Button2 soll sein Click Event erst durch den Button1_Click erhalten.


    Meinst du das?:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. AddHandler Button2.Click, AddressOf Button2_Click
    3. End Sub
    4. Private Sub Button2_Click(sender As Object, e As EventArgs)
    5. End Sub

    Aerosol schrieb:

    Deshalb müsste dieser Button quasi mit dem entsprechenden Detail Form hinterlegt werden.

    Was soll das bedeuten?

    Du hast mehrere Menüpunkte, deren Funktionalität beschreibst du in deren Events (klick im Entwurf-Modus auf den Menüpunkt, dann kriegst du im Code den Eventhandler dazu). Da kannst du ausführen, was du willst.
    Mit dem zweiten Button öffnest du eben die Form (mit frmXY.Show(), aber frmXY muss vorher mit "Dim frmXY As New Form2" instanziert werden, oder noch besser im Using-Block), die du brauchst.

    Ich verstehe gerade nicht, was genau bei dir nicht funktioniert.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Button4.Visible = True
    3. Lege fest das Button4 jetzt bei click Form1 öffnet
    4. End Sub
    5. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    6. Button4.Visible = True
    7. Lege fest das Button4 jetzt bei click Form2 öffnet
    8. End Sub
    9. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    10. Button4.Visible = True
    11. Lege fest das Button4 jetzt bei click Form3 öffnet
    12. End Sub
    Wenn alle 3 Buttons dasselbe machen (freischalten des Buttons 4), wozu brauchst du sie?

    Ansonsten brauchst du eben Eventhandler (das, was du für die anderen Buttons hast) für Button4 und da öffnest du die Form, die du brauchst.

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
    2. Using frm2 As New Form2
    3. frm2.Show(Me)
    4. End Using
    5. End Sub


    Using-Block ist dafür da, damit deine Form wieder zerstört wird, nachdem sie geschlossen wurde.
    Da ich denke, dass ich das was ich wollte irgendwie immernoch nicht so ausdrücken konnte wie ich es mir vorstelle, habe ich mal was gebastelt. Hoffe dadurch wird verständlich was ich meine. Und sorry das ich nicht genau weiß wie ich was erklären muss...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. Label1.Text = "Überschrift1"
    4. RichTextBox1.LoadFile("Resources\Textmaterial\inhalt1.rtf")
    5. Button4.Visible = True
    6. End Sub
    7. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    8. Label1.Text = "Überschrift2"
    9. RichTextBox1.LoadFile("Resources\Textmaterial\inhalt2.rtf")
    10. Button4.Visible = True
    11. End Sub
    12. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    13. Label1.Text = "Überschrift3"
    14. RichTextBox1.LoadFile("Resources\Textmaterial\inhalt3.rtf")
    15. Button4.Visible = False 'Keine Details vorhanden.
    16. End Sub
    17. Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
    18. details.inhalt1.Show() 'wenn der Button durch Button1_Click angezeigt wurde
    19. details.inhalt2.Show() 'wenn der Button durch Button2_Click angezeigt wurde
    20. End Sub
    21. Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
    22. Close()
    23. End Sub
    24. End Class
    Der Button4 soll sich automatisch bzw. durch den Klick des jeweiligen Menü Buttons anpassen!

    Klicke ich also auf Inhalt1 öffnet sich Überschrift1, inhalt1.rtf und der Button 4 soll wenn ich ihn klicke das Form mit den Details zu Inhalt1 öffnen

    Und genau das gleiche eben bei Inhalt2, Überschrift2, inhalt2.rtf und Button4 soll dann das Form mit den Details zu Inhalt2 öffnen usw.
    Was ist mit meiner ersten Frage?

    Aerosol schrieb:

    Klicke ich also auf Inhalt1

    Was ist jetzt auf einmal "Inhalt1"? Ich sehe in deinem Code keinen "Inhalt1". Meinst du "Button1"?

    Du hast das Ganze doch schon im Code implementiert, wo ist das Problem? Was genau funktioniert bei dir nicht? Hast du den Code schon ablaufen lassen? Und beantworte mir bitte, was diese "details.inhalt1.Show()" sein soll. Was ist "details.inhalt1"?

    EDIT:
    Der Button4 soll sich automatisch bzw. durch den Klick des jeweiligen Menü Buttons anpassen!

    Dann nimm das Event für das MenuItem (wie es geht, habe ich weiter oben erklärt) und nicht für den Button1,2,3. Irgendwie verstehe ich das Problem nicht.
    Er will glaub ich, das der zuletzt betätigte Button, wenn man auf Button4 klickt, erneut ausgeführt wird.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private lastbutton As Button
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. lastbutton = DirectCast(sender, Button)
    5. End Sub
    6. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    7. lastbutton = DirectCast(sender, Button)
    8. End Sub
    9. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    10. lastbutton = DirectCast(sender, Button)
    11. End Sub
    12. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    13. If Not lastbutton Is Nothing Then lastbutton.PerformClick()
    14. End Sub
    15. End Class


    musst natürlich noch die prozeduren und alles einfügen. Ich würde das alles in eine Prozedur einfügen und dann einfach mit select case den sender abfangen und jenachdem die Prozedur durchführen
    Ist, ok ich hab das ganze nun schon mehrfach geschrieben und auch erklärt. Und auch deine Frage beantwortet, wenn nicht gerade mit einem Quote aber beantwortet.

    Ich erstell nun einfach 73 Buttons und versteck immer die 72 die ich in dem Moment nicht benötige.

    Sorry das ich eure Zeit verschwendet habe

    -Closed-

    sonne75 schrieb:

    Was ist jetzt auf einmal "Inhalt1"? Ich sehe in deinem Code keinen "Inhalt1". Meinst du "Button1"?

    sonne75 schrieb:

    Was genau funktioniert bei dir nicht?

    sonne75 schrieb:

    Hast du den Code schon ablaufen lassen?

    sonne75 schrieb:

    Und beantworte mir bitte, was diese "details.inhalt1.Show()" sein soll. Was ist "details.inhalt1"?


    Wo hast du mir diese Fragen beantwortet?

    Aber wenn du keine Hilfe brauchst, dann ist ja gut.
    Verstehe ich das richtig,

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim ClickEvent As Integer = 0
    3. Private Sub btnChangeClick_Click(sender As System.Object, e As System.EventArgs) Handles btnChangeClick.Click
    4. ClickEvent = 1
    5. End Sub
    6. Private Sub btn2ClickEvent_Click(sender As System.Object, e As System.EventArgs) Handles btn2ClickEvent.Click
    7. If ClickEvent = 1 Then
    8. 'Code
    9. End If
    10. End Sub
    11. End Class

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Pentagon“ ()