2016-10-23 8 views
0

Ich erstellte ein einfaches TableLayoutPanel (6 x 6) mit Schaltflächen in jeder Zelle. Ich habe einen Click-Handler, der ausgeführt wird, wenn einer der Taste gedrückt wird (in meinem Fall, Farbe der Schaltfläche von rot auf grün ändern)vb TableLayoutPanel - Schaltfläche neben der Schaltfläche geklickt

see eg.

Aber jetzt brauche ich die Farbe der Schaltfläche ändern nächsten zu der Schaltfläche, auf die ich geklickt habe (z. B. wenn ich auf die Schaltfläche 2 3 klicke, ändert sich auch die Schaltfläche 3 3).

Irgendwelche Ideen?

+0

Mögliche Duplikat [Direkter Zugriff auf Table Zellen] (http://stackoverflow.com/questions/1598620/direct-access-to-tablelayoutpanel-cells) – Slai

Antwort

2

Sie können das Argument Sender im Click-Handler in eine Control umwandeln und dann die Position des angeklickten Steuerelements ermitteln. Dann können Sie diese Position verwenden, um Ihre Adjektsteuerelemente zu berechnen und einen Verweis darauf abzurufen.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim ctrl As Control = TryCast(sender, Control) 
    If ctrl IsNot Nothing Then 
     Dim pos As TableLayoutPanelCellPosition = TableLayoutPanel1.GetCellPosition(ctrl) 
     If pos.Row < (TableLayoutPanel1.RowCount - 1) Then 
      Dim nextCtrl As Control = TableLayoutPanel1.GetControlFromPosition(pos.Column, pos.Row + 1) 
      If nextCtrl IsNot Nothing Then 
       ' do something with nextCtrl 
       nextCtrl.BackColor = Color.Red 
      End If 
     End If 
    End If 
End Sub 
+0

thanks man Sie lebensrettend sind. Noch eine Frage. Wenn die Spalten- oder Zeilennummer kleiner als 0 ist, stürzt sie ab (z. B. wenn ich auf die Schaltfläche 1 0 klicke, die Schaltfläche links ist 1 -1 und stürzt ab). wie das zu beheben? –

+0

Das passiert, wenn ich auf eine Schaltfläche klicke http://i.imgur.com/VKjuBzX.png ... Aber die Ecken funktionieren nicht –

+0

Ich habe es geschafft, doch zu arbeiten –

Verwandte Themen