Markierung erhalten (VB.NET 3.5)

  • VB.NET
  • .NET 3.5

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Tizian170.

    Markierung erhalten (VB.NET 3.5)

    Hallo! Ich wollte eigentlich eine Form!

    Naja, das wäre sehr einfach! :P

    Aber das ist halt das Problem: In der Form soll man wenn man die Maustaste gedrückt hält und dabei die Maus bewegt, mehrere Button´s ändern*.
    Nun ... wie kann ich eine Markierungsfläche machen???


    Wenn du das hier nicht kapiert hast, dann das:
    Wie bei dem Windows-Desktop soll man eine Markierungsfläche haben, wenn man mit der RECHTEN Maustaste klickt und den Bereich zieht.
    Alle Markierten Button´s sollen von Standard-Style zu dem Style Popup geändert werden. Wenn man dann ENTER drückt werden alle Button´s gleichzeitig ausgelöst. Das mit dem Auslösen hab ich schon.

    * = Der Style soll von Standard zu dem Style Popup geändert werden.


    Danke in der Vorsicht! :thumbsup:
    Probleme kann man beheben,
    Fragen aber auch 8o

    Und wer das nicht kann, darf nicht Traurig sein! Frag doch´ mal!

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

    Kannst du das auch so formulieren, dass ein Normalsterblicher versteht was du machen möchtest?

    p.s. Hier der obligatorische Smily, damit mein Post nicht so böse klingt :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Naja,
    *Vollzitat entfernt*

    Wenn man in der Lage ist, einen Code zu schreiben...
    Probleme kann man beheben,
    Fragen aber auch 8o

    Und wer das nicht kann, darf nicht Traurig sein! Frag doch´ mal!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Tizian170 schrieb:

    Wenn man in der Lage ist, einen Code zu schreiben...
    Mit welchen Kenntnissen willst Du was erreichen?
    Und:
    Unterlass das vollständige Zitieen von Posts über den Deinen.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Naja,
    Spoiler anzeigen
    Mit welchen Kenntnissen willst Du was erreichen?


    mit ... guten???
    Probleme kann man beheben,
    Fragen aber auch 8o

    Und wer das nicht kann, darf nicht Traurig sein! Frag doch´ mal!
    Evtl. hast du @RodFromGermany falsch verstanden.
    Er redet davon was du schon kannst damit wir dir hier mit deinem Wissen dich an dein Ziel bringen können.
    Dir evtl. was zum lesen geben oder Beispiele.

    Solltest du nur was fertiges wollen dann ab in den Marktplatz mit Gegenleistung und dann findet sich jemand.
    Grüße , xChRoNiKx
    Nja okay...
    Aber ich hab VB 2008 EXPRESS!
    Probleme kann man beheben,
    Fragen aber auch 8o

    Und wer das nicht kann, darf nicht Traurig sein! Frag doch´ mal!
    Ja. Naja, da kommen aber fehler!


    Name/VB 2008ExpressVoll
    AuswahlrechteckNEINJA
    Morrrison-AntwortWEISS NICHTWEISS NICHT

    Und ich benutze VB 2008 EXPRESS
    Probleme kann man beheben,
    Fragen aber auch 8o

    Und wer das nicht kann, darf nicht Traurig sein! Frag doch´ mal!

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Tizian170“ ()

    Tizian170 schrieb:


    Ja. Naja, da kommen aber fehler!
    Und ich benutze VB 2008 EXPRESS


    Ok. Wie @Murdoc schon fragte wie wäre es mit Fehler hier posten? Unsere Glaskugeln sind leider alle in der Reparatur also
    sind wir darauf angewiesen das du uns mitteilst was GANZ genau nicht funktioniert ( Fehlermeldung aus der IDE kopieren und hier einfügen).

    Desweiteren ist das doch egal welche IDE du nutzt dieser Code der dir gepostet wurde wird auch da funktionieren
    ansonsten falls nicht (ich kann nicht testen ob der in 2008 Express geht hab ich nicht) hindert dich irgendetwas daran Visual Studio Community
    zu nutzen? Ist auch kostenlos und aktueller.
    Grüße , xChRoNiKx
    Huhuu!

    Hab hier mal was zusammengeschustert!!

    Hab eine Form auf der ich paar Buttons platziert habe und folgenden Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private myBrush As New SolidBrush(Color.FromArgb(10, Color.Blue))
    4. Private _mouse_StartLocation As Point = Nothing
    5. Private _markingRect As Rectangle = Nothing
    6. Private _currX As Integer = Nothing
    7. Private _currY As Integer = Nothing
    8. Private _currWidth As Integer = Nothing
    9. Private _currHeight As Integer = Nothing
    10. Private _actButton As Button = Nothing
    11. Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
    12. If e.Button = MouseButtons.Right Then
    13. 'Mausposition holen
    14. _mouse_StartLocation = e.Location
    15. End If
    16. End Sub
    17. Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
    18. If e.Button = MouseButtons.Right Then
    19. 'Wenn jetzige horizontale Position kleiner als Ausgangsposition
    20. If e.Location.X < _mouse_StartLocation.X Then
    21. _currX = e.Location.X
    22. _currWidth = _mouse_StartLocation.X - e.Location.X
    23. Else 'umgekehrt
    24. _currX = _mouse_StartLocation.X
    25. _currWidth = e.Location.X - _mouse_StartLocation.X
    26. End If
    27. 'Wenn jetzige vertikale Position kleiner als Ausgangsposition
    28. If e.Location.Y < _mouse_StartLocation.Y Then
    29. _currY = e.Location.Y
    30. _currHeight = _mouse_StartLocation.Y - e.Location.Y
    31. Else 'umgekehrt
    32. _currY = _mouse_StartLocation.Y
    33. _currHeight = e.Location.Y - _mouse_StartLocation.Y
    34. End If
    35. 'Markierungs-Rectangle erzeugen
    36. _markingRect = New Rectangle(_currX, _currY, _currWidth, _currHeight)
    37. 'Alle Buttons suchen und prüfen ob diese in der Markierung liegen
    38. For Each _ctrl As Control In Controls
    39. If TypeOf _ctrl Is Button Then
    40. _actButton = DirectCast(_ctrl, Button)
    41. For Each _point As Point In _getAllPoints(_actButton.Bounds)
    42. If _markingRect.Contains(_point) Then
    43. _actButton.FlatStyle = FlatStyle.Popup
    44. Exit For
    45. Else
    46. _actButton.FlatStyle = FlatStyle.Standard
    47. End If
    48. Next
    49. End If
    50. Next
    51. 'Call Paint-Event
    52. Refresh()
    53. End If
    54. End Sub
    55. Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp
    56. 'Auswahlrechteck löschen
    57. If e.Button = MouseButtons.Right Then
    58. _markingRect = Nothing
    59. Refresh()
    60. End If
    61. End Sub
    62. Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
    63. If _markingRect <> Nothing Then
    64. e.Graphics.FillRectangle(myBrush, _markingRect)
    65. End If
    66. End Sub
    67. 'Alle Punktkoordinaten auslesen --!!hier würden auch nur die Koordinaten des Rectangles reichen!!--
    68. Private Function _getAllPoints(ByVal _rect As Rectangle) As Point()
    69. Dim _points((_rect.Width * _rect.Height) - 1) As Point
    70. Dim _offset As Integer = 0
    71. For x = 0 To _rect.Width - 1
    72. For y = 0 To _rect.Height - 1
    73. _points(_offset) = New Point(_rect.Left + x, _rect.Top + y)
    74. _offset += 1
    75. Next
    76. Next
    77. Return _points
    78. End Function
    79. End Class