2017-01-07 13 views
0

1列と2行のTableLayoutPanel(tlp_printing_content_layer2)があり、各セルにも1つのボタンがあります。ボタンをクリックすると、列とセル番号を取得する方法はありますか?私は仕事されていない別のUserControl送信者列と行番号を取得するにはどうすればよいですか?

Private Sub btn_printer_Click(sender As Object, e As EventArgs) Handles btn_printer2.Click, btn_printer3.Click, btn_printer4.Click, btn_printer5.Click 
    Dim currButton As Button = sender 
    Dim prtp As New ctrl_PrinterPanel 
    currButton.Dispose() 
    tlp_printing_content_layer2.Controls.Add(prtp, sender.column, sender.row) 
End Sub 

sender.columnとsender.rowでボタンを置き換えたい...または他の方法は、他のユーザーコントロールとボタンを交換するということですので?あなたがクリックしたボタンの名前と一致するButtonを見つけるまで

+0

をあなたは常に2つのだけの行を持っていますか? –

+1

'dim pos as TableLayoutPanelCellPosition = tlp.GetCellPosition(ボタン)' –

答えて

1

あなたが列と行を反復処理することができます

 Private Sub PrintButton_Click(sender As Object, e As EventArgs) Handles PrintButtonOne.Click, PrintButtonTwo.Click 

     'find which row was clicked 
     Dim rowPos As Integer = whichRow(sender, e) 

     'did we get a valid result? 
     If rowPos > -1 Then 

      'this is a dummy red control so that we can see it working 
      Dim myNewControl As Panel = New Panel With {.BackColor = Color.Red} 

      'remove the old 
      TableLayoutPanel1.Controls.Remove(DirectCast(sender, Button)) 

      'add the new 
      TableLayoutPanel1.Controls.Add(myNewControl, 0, rowPos) 

     End If 

    End Sub 

    Private Function whichRow(sender As Object, e As EventArgs) As Integer 

     'cast the button that was clicked 
     Dim clickButton As Button = DirectCast(sender, Button) 

     'look through all the cols and rows 
     For colNum As Integer = 0 To TableLayoutPanel1.ColumnCount 
      For rowNum As Integer = 0 To TableLayoutPanel1.RowCount 
       'try cast the control we find at position colnum:rownum 
       Dim testcontrol As Button = TryCast(TableLayoutPanel1.GetControlFromPosition(colNum, rowNum), Button) 
       If Not testcontrol Is Nothing Then 
        'is this testcontrol the same as the click control? 
        If clickButton.Name = testcontrol.Name Then 
         Return rowNum 
        End If 
       End If 
      Next 
     Next 

     'not found or some other issue 
     Return -1 

    End Function 
関連する問題