Button Menu ein-ausblendbar

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von brennbolle.

    Button Menu ein-ausblendbar

    Hi

    Ich erstelle mir gerade einen webbrowser, (bin Newbie) und möchte gern über einen Button ein "Buttonmenue" ein und ausblenden lassen, siehe bild unten (vereinfacht). Hab über die Sufu nicht das gefunden was ich suche. Kann mir da jemand weiterhelfen ??


    THX

    LG :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „brennbolle“ ()

    Du musst die Buttons in ein Panel packen. Ich würde ein Rectangle definieren das deckungsgleich mit dem panel ist und bei jedem MouseMove prüfen ob die Maus-Koordinaten im Rectangle liegt und dann dass Panel einblenden

    Habe dir kurz mal was geschrieben:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim rect As New Rectangle(40, 58, 172, 84) ' muss die Werte des Panels haben
    4. Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    5. If e.X > rect.X And e.X < (rect.Width + rect.X) Then
    6. If e.Y > rect.Y And e.Y < (rect.Height + rect.Y) Then
    7. Panel1.Visible = True
    8. Else
    9. Panel1.Visible = False
    10. End If
    11. Else
    12. Panel1.Visible = False
    13. End If
    14. End Sub
    15. End Class

    8-) faxe1008 8-)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „faxe1008“ ()

    Dankeschön, nett von dir. !!!!!!

    edit: eine Frage, : Dim rect As New Rectangle(40, 58, 172, 84) ' muss die Werte des Panels haben

    welche werte ? Koordinaten ? Größe?

    :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „brennbolle“ ()

    der erste Parameter ist Panel1.Location.x
    der zweite Parameter ist Panel1.Location.y
    der dritte Parameter ist Panel1.width
    der vierte Parameter ist Panel1.height

    Hier:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim rect As Rectangle
    4. Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    5. If e.X > rect.X And e.X < (rect.Width + rect.X) Then
    6. If e.Y > rect.Y And e.Y < (rect.Height + rect.Y) Then
    7. Panel1.Visible = True
    8. Else
    9. Panel1.Visible = False
    10. End If
    11. Else
    12. Panel1.Visible = False
    13. End If
    14. End Sub
    15. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    16. rect.X = Panel1.Location.X
    17. rect.Y = Panel1.Location.Y
    18. rect.Width = Panel1.Width
    19. rect.Height = Panel1.Height
    20. End Sub
    21. End Class

    8-) faxe1008 8-)
    das mit dem andalso ändert im wesentlichen ja nichts and er funktionalität und die globale deklaration von Dim rect As Rectangle = Panel1.DisplayRectangle kann nicht funktioníeren, da das Control da noch nicht "existiert". Ob ich im Form_Load event das nun einzeln mache oder nicht ist ja eigentlich egal oder ;)

    8-) faxe1008 8-)
    Nein ich meinte direkt im MouseMove nutzen. Das Ganze global deklarieren macht ja nicht viel Sinn.

    So:

    VB.NET-Quellcode

    1. Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    2. If e.X > Panel1.DisplayRectangle.X AndAlso e.X < (Panel1.DisplayRectangle.Width + Panel1.DisplayRectangle.X) Then
    3. If e.Y > Panel1.DisplayRectangle.Y AndAlso e.Y < (Panel1.DisplayRectangle.Height + Panel1.DisplayRectangle.Y) Then
    4. Panel1.Visible = True
    5. Else
    6. Panel1.Visible = False
    7. End If
    8. Else
    9. Panel1.Visible = False
    10. End If
    11. End Sub

    Kürzer oder :rolleyes: ?
    @Gonger96:
    hab's gerade mal mit deiner idee probiert und auch wenn ich ein paar pixel über dem Panel bin wird es eingeblendet deswegen würde ich eher einzeln zuweisen... und was die länge betrifft: nicht unwesentlich :D

    8-) faxe1008 8-)
    JAJA aller anfang ist schwer. Trotz das ich Grundlagen lese, (seit 2tagen) ;) Haperts noch an allen ecken, aber das wird schon. So habe nun mal testweise ein neues Projekt erstellt. Den Code eingefügt, ein Panel erstellt, und dort die Buttons reingezogen.(Siehe unten) Wie verfahre ich jetzt weiter? ich hätte gerne einen button extra im Projekt der das panel ein + aus blendet.(sollen mal mehrere werden) Aber erstmal muss ich doch irgendwie das Panel und die Buttons "verknüpfen" oder??? (SOrry aber wie gesagt ANFÄNGER) :rolleyes:


    Code Form1 komplett:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim rect As Rectangle = Panel1.DisplayRectangle
    4. Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    5. If e.X > rect.X And e.X < (rect.Width + rect.X) Then
    6. If e.Y > rect.Y And e.Y < (rect.Height + rect.Y) Then
    7. Panel1.Visible = True
    8. Else
    9. Panel1.Visible = False
    10. End If
    11. Else
    12. Panel1.Visible = False
    13. End If
    14. End Sub
    15. Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
    16. End Sub
    17. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    18. End Sub
    19. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    20. End Sub
    21. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    22. End Sub
    23. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    24. End Sub
    25. End Class



    THX
    @faxe1008
    Zwischen And und AndAlos gibt es einen großen Unterschied, der die die Programmierung erheblich erleichtert. Sei die Klasse BeispielKlasse deklariert, die eine Methode BeispielMethode besitzt welche einen Boolean zurückgibt:

    VB.NET-Quellcode

    1. Dim obj As BeispielKlasse = Nothing
    2. If obj IsNot Nothing AndAlso obj.BeispielMethode Then 'hier kommt kein Fehler
    3. 'etwas tun
    4. End If
    5. If obj IsNot Nothing And obj.BeispielMethode Then 'hier aber schon
    6. 'etwas tun
    7. End If
    ok aller anfang ist schwer. in den Button der ein und ausblenden soll prüftst du ob das Panel sichtbar ist und wenn ja machst du es unsichtbar und umgekehrt:

    VB.NET-Quellcode

    1. If Panel1.Visible = True Then
    2. Panel1.Visible = False
    3. ElseIf Panel1.Visible = False Then
    4. Panel1.Visible = True
    5. End If

    @BjöNi: weil einfach einfach zu einfach ist
    @Artentus: OK man lernt nie aus 8o

    8-) faxe1008 8-)
    Echt top von euch , mein prob. bei den ganzen sachen ist, ich kann die befehle (deren funktion) verstehen, wenn ihr was postet. Nur das zusammensetzen (aufbau) des Codes versteh ich noch nicht wirklich. Habt ihr vlt. noch Tips zu tutorials oä. wo genau dieser aufbau gut eerklärt wird?? Diese ganze VB Geschichte gefällt mir, und mir is auch klar das ohne Grundlage nix vernünftiges dabei rauskommen kann. Aber ich hab jetzt in den 2-3 Tagen Stundenlang hier im Forum usw gelesen, und heute hab ich nix mehr verstanden :) . Deswegen wäre es RICHTIG NETT, wenn ihr diesen Aufbau mit den Buttons einmal Schritt für Schritt mit mir Durchgehen könntet. Das ist für mich der beste weg das ich es wirklich "verstehe".

    Also wenn ihr zeit und lust hättet wäre es SUUUPER NETT !!!!!!

    edit:

    HTML-Quellcode

    1. Dim obj As BeispielKlasse = Nothing
    2. If obj IsNot Nothing AndAlso obj.BeispielMethode Then 'hier kommt kein Fehler
    3. 'etwas tun
    4. End If
    5. If obj IsNot Nothing And obj.BeispielMethode Then 'hier aber schon
    6. 'etwas tun
    7. End If


    Ich verstehe zum Beispiel an dem Code, was er macht. Nur wie man was anwendet, das is noch das große Prob.

    THX ;) :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „brennbolle“ ()