Panel SelectBox

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RoulettePilot.

    Panel SelectBox

    Guten Tag,
    Ich möchte gerne auf ein Panel oder andern ähnlichen Boxen, dass der Benutzer IN der Panel Box Punkt 1 aussucht (Mit Mausklick) und dann Punkt 2. Und das macht er an besten mit gedrückt halten.
    Dem ich wahrscheinlich etwas bisschen komisch erkläre, das beste Beispiel ist Windows Paint. Mit dem Tool "Auswählen" kann man auf sein Paint Bild eine Box erstellen, und den bereich rausschneiden und was auch immer. Und genau so eine Box will ich machen. Ich will nur wissen wo er angefangen hat, und wie weit er Punkt 2 gemacht hat.
    Das Problem, ich weiß wie ich anfangen soll, und was man alles dafür braucht.

    Vielen dank für euche Zeit im Voraus.
    Wenn du auf ein Panel Klicks, bekommst du derren Koordinaten mitgeliefert, also x und y
    nun musst du nur dafür sorgen, das dein WasAuchImmerESmachenWirdProgramm erst dann anfängt, wenn der 2. Klick fertig ist.

    also praktisch den 1. Klick merken, und beim 2. loslegen.
    hier mal eine seehr einfache variante (die du auch ausbauen kannst für 3 und mehr Klicks)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim KlickListe As New List(Of Point)
    3. Private Sub Panel1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
    4. If KlickListe.Count = 0 Then
    5. ' erster Klick
    6. KlickListe.Add(e.Location) ' merken
    7. Else
    8. KlickListe.Add(e.Location)
    9. ' nun mache was mit den 2 Punkten...
    10. ' Sub AufGehts(Punkteübergabe)
    11. MsgBox("Tu was mit: " & KlickListe(0).ToString & " und " & KlickListe(1).ToString)
    12. KlickListe.Clear() ' und wieder löschen
    13. End If
    14. End Sub
    15. End Class


    Edit:
    Wer lesen kann ist Klar im Vorteil: Du meintest ja das "ziehen" der Maus..
    dies wäe eine Möglichkeit .. beim Ruterdrücken die Position merken, und beim Loslassen die aktuelle Position holen, und schon hast du beide.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim RememberMouseLocation As New Point
    3. Private Sub Panel1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
    4. RememberMouseLocation = e.Location
    5. End Sub
    6. Private Sub Panel1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
    7. MsgBox("Tu was mit: " & RememberMouseLocation.ToString & " und " & e.Location.ToString)
    8. End Sub
    9. End Class

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

    @RoulettePilot Findest Du es gut, dass Du allen Fragestellern, denen Du antrwortest, fertige Lösungen postest?
    Ich nicht, und andere auch nicht.
    Was sollen die machen, wenn Du auf Urlaub bist und kein www zur Hand hast?
    Sollen wir dann für Dich die fertigen Lösungen posten? Denn sie haben ja nicht gelernt, Lösungen selbst zu erarbeiten, im www zu suchen und vor allem zu finden. ;(
    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!
    Sie sollen wie ich, aus "fremden" Lösungen lernen.
    Keine Ahnung ob du nur hinter 100 Büchern gesessen hast, oder auch dir "fremden" Code angesehen hast. (der ja von irgendwoher kommen muss)

    und.. Sie haben ja meist ein "großes" Ziel, wo Sie im Augenblick einen Stolperstein haben, und nicht weiterkommen.
    Ist dieser behoben, geht's weiter.

    Und...
    Ja, das finde ich gut, denn wenn ich mal hilfe brauchte würde ich mich auch freuen, wenn mir einer bei diesem einem Problem KONKRET hilft,
    anstatt mir zu sagen, das ich das ich mich dort und dort einlesen sollte.

    Gerade anhand von einfachen Codeschnipseln, ohne viel Schnick-Schnack.. lernt man teilweise mehr als bei 100 Seiten lesen, wenn man
    denn wirklich interessiert ist. Denn dann wird dort mal ein Parameter geändert, mal da... und siehe da.. Die Lernkurve steigt

    RoulettePilot schrieb:

    anstatt mir zu sagen, das ich das ich mich dort und dort einlesen sollte.
    Du musst den Kollegen zeigen, wie sie sich die Information selbst beschaffen können: Hilfe zur Selbsthilfe.
    Es hilft aber mehr, wenn Du Suchmaschinen-Wörter schreibst als den einen von Dir präferierten Code.
    Klar, in einzelnen Fällen muss da mal Code stehen. Aber nur dann, wenn der TE seinen Code postet und / oder konkret nach Fehlern in seinem Code fragt.

    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!
    Es gibt ja wohl 2 Arten von Fragestellern.
    1. den Anfänger
    der braucht, um nicht gleich am Anfang alles hinzuschmeißen kleine Erfolgserlebnisse. Meist hängt es ja an einer kleinen Sache, an der sie nicht weiterkommen.
    (kann mich nicht erinnern, ein komplettes Projekt hier gepostet zu haben)
    Da nützt es nichts wenn ich auf nur eine Funktion verweise ohne Weitere Hinweise, da sie u.U. zig Parameter-Möglichkeiten hat, wo er dann auch nicht weiterkommt, weil er 1/3 (noch) nicht kennt, mit 1/3 gar nichts anfangen kann, und das letzte Drittel schon durchprobiert hat.
    Wie gesagt, es ist meist kleine Sache an denen es hängt, und weiter geht's dann mit ihrem Projekt.

    2. den "Profi"
    ...der mal eine Andere Sache macht als er gewohnt ist. Er hat sich sicher eingelesen und alles durchgeschaut, sieht aber manchmal den Wald vor Bäumen nicht. Und da ist ein Fingerzeig auf die richtige Stelle Gold wert.

    Ich habe viel von Fremden Code gelernt (damals noch als Hex-Listing *g*), es ist immer wieder interessant diese Aha-Effekte zu erleben (auch heute noch), wo man sich sagt..
    ach.. interessant, so geht's ja auch, wäre ich nie drauf gekommen.

    und... wenn alle nur auf die Suchmaschine verweisen.. wird's bald keine Ergebnisse mehr geben. Denn auch DORT hat sich einer mal die Mühe gemacht und es erläutert.

    Edit: Und das eine Suchmaschine benutzt wurde, sieht man ja schon daran, das sie dieses Forum hier gefunden haben.