mouseposition in panel.region?

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    mouseposition in panel.region?

    Hi,
    ich habe folgendes Problem:
    Ich möchte abfragen, ob die "mouseposition" in einer Region ist.

    Das war mein erster ansatz, der aber nur Funktioniert, wenn ich in der Ecke links, oben bin...

    VB.NET-Quellcode

    1. If panel1.location = mouseposition then
    2. End If


    Meine nächste Idee war:

    VB.NET-Quellcode

    1. If panel1.region = mouseposition then
    2. End If

    Das geht natürlich auch nicht, da man eine Region nicht in eine Position umwandeln kann.

    Also im Klartext: Wie kann ich abfragen, ob eine Position(Location) in einer Region ist?

    Vielen Dank,
    Michi
    Stichwort: Panel_MouseEnter

    MFG

    Alex-Digital

    EDIT:

    Code

    VB.NET-Quellcode

    1. Private Sub Panel1_MouseEnter(sender As Object, e As System.EventArgs) Handles Panel1.MouseEnter
    2. MessageBox.Show("In")
    3. End Sub

    Nicht ganz...

    @Alex-Digital

    Vielen Dank für deine schnelle Antwort! Ich habs grad' ausprobiert und es klappt immer noch nur, wenn ich in die Ecke links,oben drücke.
    Also ich habs so gemacht:

    VB.NET-Quellcode

    1. For Each Controll As Control In Me.Controls
    2. If Controll.Name.Contains("panel") And Controll.MouseButtons = Windows.Forms.MouseButtons.Left Then
    3. MsgBox(Controll.Name)
    4. End If
    5. Next

    Im MouseDown Event.

    Grüße,
    Michi
    Meinst Du so was:

    VB.NET-Quellcode

    1. Dim rect = Panel1.ClientRectangle
    2. Dim pt = New Point(10, 20)
    3. If rect.Contains(pt) Then
    4. MessageBox.Show("drin")
    5. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So:

    VB.NET-Quellcode

    1. For Each Controll As Control In Me.Controls
    2. Dim rect As Rectangle = Controll.ClientRectangle
    3. If Controll.Name.Contains("panel") And rect.Contains(MousePosition) Then
    4. MsgBox(Controll.Name)
    5. End If
    6. next


    funktionierts leider nicht. Wobei ich nicht ganz verstehe warum, sieht sehr richtig aus... (@RodFromGermany)

    Grüße,
    Michi.

    EDIT:
    Auch so geht es leider nicht:

    VB.NET-Quellcode

    1. For Each Controll As Control In Me.Controls
    2. If Controll.Name.Contains("panel") Then
    3. Dim rect As Rectangle = Controll.ClientRectangle
    4. If rect.Contains(MousePosition) Then
    5. MsgBox(Controll.Name)
    6. End If
    7. End If
    8. Next

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

    Setz da mel einen Haltepunkt rein und stell fest, welche Controls gefunden werden.
    Vielleicht muss da nur noch ein ToLower() rein:

    VB.NET-Quellcode

    1. If Controll.Name.ToLower().Contains("panel") And rect.Contains(MousePosition) Then
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,
    bin nun selbst auf die Lösung gekommen.

    Ich habe mir eine eigene Klasse erstellt, die die Panel Klasse geerbt hat.
    Falls es jemanden interessiert, so sieht das dann aus:

    VB.NET-Quellcode

    1. Public Class mpnl
    2. Inherits Panel
    3. Public Sub klicken() Handles Me.Click
    4. MsgBox("Draufgeklickt!")
    5. End Sub
    6. End Class


    Trotzdem vielen, vielen Dank für eure Hilfe!
    Deine Problembeschreibung ist Dir wohl nicht ganz gelungen oder? Und was Du da machst, ist wohl überflüssig.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Panel1_Click(sender As Object, e As EventArgs) Handles Panel1.Click
    3. MessageBox.Show("?????")
    4. End Sub
    5. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Okay, ich hab wohl die Problembeschreibung nicht so ganz richtig geschrieben... Ich erstelle mit dem Programm, im Programm, Panels und da es die ja dann vor dem Starten noch nicht gab, kann ich Panel.click nicht hernehmen. Ich bemühe mich nächstes mal, mein Problem genauer zu beschreiben ;)
    Natürlich geht das.

    VB.NET-Quellcode

    1. Private WithEvents Panel1 As New Panel

    VB.NET-Quellcode

    1. Private Sub Panel1_Click(sender As Object, e As EventArgs) Handles Panel1.Click
    2. MessageBox.Show("?????")
    3. End Sub


    Wichtig ist das Wörtchen WithEvents
    SᴛᴀʀGᴀᴛᴇ01

    anonYm schrieb:

    Ich bemühe mich nächstes mal, mein Problem genauer zu beschreiben
    Ist schon extrem wichtig, wenn Du eine gute und qualitativ hohe Antwortquote haben willst.

    StarGate01 schrieb:

    VB.NET-Quellcode

    1. Private WithEvents Panel1 As New Panel
    Üblicherweise werden Panels im Designer angelegt, wie bei @SpaceyX:, da wäre diese Deine Zeile falsch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!