Abfrage mouseclick in chart

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Abfrage mouseclick in chart

    Hi,

    ist es möglich in einem Balkendiagramm einen bestimmten Balken anzuklicken(und diesen zu erkennen)? Einen direkten weg gibt es schonmal nicht,
    da sich ein Mausclick nur auf das gesamte Objekt bezieht. Das hab ich im Internet gefunden:

    VB.NET-Quellcode

    1. Private Sub Chart1_Click(sender As Object, e As System.EventArgs) Handles Chart1.Click
    2. Try
    3. Dim pointindex As Integer
    4. Dim result As HitTestResult
    5. result = Chart1.HitTest(System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y)
    6. If result.ChartElementType = ChartElementType.DataPoint Then
    7. pointindex = result.PointIndex
    8. End If
    9. MsgBox(pointindex)
    10. Catch ex As Exception
    11. MsgBox(ex.Message)
    12. End Try


    Der Code verursacht zwar keinen Fehler, allerdings bekomme ich nichts anderes als 0 heraus, egal wo ich hinklicke.
    Außer bei der Überschrift, da wird wieso auch immer eine 2 ausgegeben.
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Nils_Kr schrieb:

    egal wo ich hinklicke.
    Schieb mal das Fenster so in die obere linke Ecke, dass das Chart sehr dicht an der Bildschirmecke beginnt.
    Oder:
    In welchem Koordinatensystem liegen System.Windows.Forms.Cursor.Position.X und System.Windows.Forms.Cursor.Position.X?
    Gugst Du Chart1.PointToClient()
    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!
    ich hab keine Ahnung wo das Koordinatensystem liegt. Allerdings hab ich jetzt herausgefunden,
    dass die Funktion den Wert der x-Achse anzeigt, wenn man genau deren vertikale Linie trifft.

    Mit System.Windows.Forms.Cursor.Position.X & y kann man also einen genauen Punkt abfragen.
    Nur die Bestimmung ob auf dem Balken oder nicht, ist in dieser Form falsch.

    PS: Ich hab mir die Properties von HitTestResult angeguckt. Da gibt's leider nichts passendes. Also ich glaub ohne kompliziertes
    Workarround ist da nix zu holen.
    Option strict = on

    If it's stupid and it works it ain't stupid.

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

    Nils_Kr schrieb:

    herausgefunden
    Panel b hat die Location (rote Linie), wenn das MainWindow das Parent von Panel b ist.
    Wenn Panel a das Parent von Panel b ist, muss die Location rot durch blau ersetzt werden.
    Feddich.
    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!
    Aber das hilft mir jetzt doch nicht dabei, ob ich im Graphen mit dem Klick einen Balken getroffen habe oder nicht? Der oben gepostete Code gibt zurück,
    ob man eine x-Achsen Hilfslinie getroffen hat oder eben nicht(=dann 0).

    Mit Chart.HitTest() kann man alles mögliche Abfragen, aber leider nicht ob man sich auf einem series-element befindet.
    Option strict = on

    If it's stupid and it works it ain't stupid.

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