Nebenstehenden Button ermitteln

  • VB.NET
  • .NET (FX) 4.0

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

    Nebenstehenden Button ermitteln

    Hi Leute,
    ich habe auf einer Form 4 Buttons nebeneinander, die sich auch berüheren, allerdings nur ganz leicht. Sie sin alle auf einer Linie und halt 4 Stück.
    Wenn jetzt zum Beispiel der 2. Button gedrückt wird, kann ich dann vom 1. bzw. 3. die Eigenschaften (BackColor, enabled=true) auslesen?

    Hilfe0987
    :thumbup:
    Solange Du Zugriff auf alles hast, weil es in Deinem Prgramm ist, kannst Du alles auslesen. Es geht ja nur darum zu ermitteln, welche Buttons am nächsten zu Deinem pressed button sind. Und das bekommst Du ja über die Position der einzelnen Buttons mit.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich vermute fast, dass Deiner Problembeschreibung noch wichtige Infos fehlen und Du eigentlich was ganz anderes vorhast, aber bitte:

    VB.NET-Quellcode

    1. Private Sub GetNextButton(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
    2. Dim MinDistance = 999, MinDistanceButton As Button = Nothing, CurrentDistance = 0
    3. For Each ctl As Control In Me.Controls
    4. If TypeOf ctl IsNot Button OrElse sender Is ctl Then Continue For
    5. CurrentDistance = Math.Abs(ctl.Left - DirectCast(sender, Button).Left)
    6. If MinDistance > CurrentDistance Then
    7. MinDistance = CurrentDistance
    8. MinDistanceButton = DirectCast(ctl, Button)
    9. End If
    10. Next
    11. MinDistanceButton.Focus()
    12. End Sub


    Wer macht's kürzer?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Hilfe0987 schrieb:

    den nächsten Button auswählen
    Du kannst die Controls des Parents des Buttons durchklickern und ihre Client-Rects zueinander in Beziehung setzen. Da müsstest Du die unmittelbaren Nachbarn 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!
    Nicht, dass ich was entsprechendes bereits gepostet hätte ... :huh:
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Oder du benennst die Buttons entsprechend

    Button_1 Button_2 usw.

    ​Durch das Sender Objekt kommst du an den Namen deines aktuellen Buttons und kannst so auf den linken und rechten schliessen.

    Gruss

    mikeb69

    Hilfe0987 schrieb:

    also 4 insgesamt
    Welcher von denen ist in der Mitte?

    VB.NET-Quellcode

    1. Dim btns() As Button = { Button1, Button2, Button3, Button4 }
    2. For Each btn in btns
    3. If Bot btn.Equals(Button2) Then
    4. btn.BackColor = Color.Red
    5. End If
    6. Next
    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!
    @Hilfe0987,

    der Code von Rod ist nur als Beispiel zu betrachten.
    Am Ende hast du natürlich deine verschiedenen Button auf der Form.

    Die Abfrage

    VB.NET-Quellcode

    1. If btn.Equals(Button2) Then

    ist mit

    VB.NET-Quellcode

    1. If bnt = Button2 Then

    zu verstehen.

    Gruss

    mikeb69

    Hilfe0987 schrieb:

    (.Equals)
    Wenn ich Du wäre, hätte ich zunächst die MSDN befragt, dann ättest Du gemerkt, dass damit Deine Forderung
    ALLEN Buttons außerhalb des Buttons in der Mitte
    erfüllt wird.
    Spiele ein wenig mit diesem Code, verstehe das Konzept und melde Dich dann wieder. ;)
    =====
    @mikeb69 Da muss ein Is rein.

    VB.NET-Quellcode

    1. If btns(2) Is Button2 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!
    Ich habe jetzt 32 Buttons.
    1. Reihe: 8 Buttons
    2. Reihe: 8 Buttons
    3. Reihe: 8 Buttons
    4. Reihe: 8 Buttons

    Wenn jetzt irgendein Button gedrückt wird, sollen die Buttons, die unmittelbar an dem Button dran sind (die Ränder berüheren sich), auf die EIgenschaften überprüft werden. Die Buttons außerhalb des geklickten Buttons müssen eine bestimmte Farbe haben! (backcolor wird abgefragt)

    Wie geht das?
    :thumbup:
    Hihi - der Mensch wächst mit seinen Aufgaben ;)

    Hilfe0987 schrieb:

    ich habe auf einer Form 4 Buttons nebeneinander, die sich auch berüheren, allerdings nur ganz leicht. Sie sin alle auf einer Linie und halt 4 Stück.
    Wenn jetzt zum Beispiel der 2. Button gedrückt wird, kann ich dann vom 1. bzw. 3. die Eigenschaften (BackColor, enabled=true) auslesen?

    [...]

    Hilfe0987 schrieb:

    Ich habe jetzt 32 Buttons.
    1. Reihe: 8 Buttons
    2. Reihe: 8 Buttons
    3. Reihe: 8 Buttons
    4. Reihe: 8 Buttons
    Wenn jetzt irgendein Button gedrückt wird, sollen die Buttons, die unmittelbar an dem Button dran sind (die Ränder berüheren sich), auf die EIgenschaften überprüft werden. Die Buttons außerhalb des geklickten Buttons müssen eine bestimmte Farbe haben! (backcolor wird abgefragt)
    Wie geht das?
    Kann ich jetzt nicht aus der Hüfte schiessen, nur soviel: Das wird möglicherweise ein ziemlich listiger Algorithmus werden müssen, der das rausfindet.
    Auch ist die Fragestellung noch immer nicht vollständig - was ist mit Berührungen über Eck?
    Aber vielleicht ists auch einfach, wenn das hier eine zuverlässige Aussage ist:

    Hilfe0987 schrieb:

    Die Buttons außerhalb des geklickten Buttons müssen eine bestimmte Farbe haben! (backcolor wird abgefragt)
    Weil "ausserhalb" sind ja einfach alle anderen Buttons.
    Aber ich glaub, war nicht so gemeint. Aber was man glaubt, wie was gemeint ist, ist eiglich niemals eine brauchbare Kommunikations-Basis.

    Also du musst schon ganz genau sagen, was du meinst.