2017-02-24 82 views
1

嗨,我想隱藏或禁用我第三列中的按鈕,我打算每次單擊它時添加行。亂七八糟的是,以前的按鈕是活動的,可以添加行。我怎樣才能把按鈕放在最後一行?如何在DataGridView中禁用或隱藏按鈕

這是我的工作代碼:

Private Sub dgAppliances_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgAppliances.CellContentClick 
    If e.ColumnIndex <> 2 Then 
     Exit Sub 
    Else 
     If Me.dgAppliances.RowCount - 1 = 20 Then 
      MsgBox("Maximum of 20 appliances only.") 
     Else 
      Me.dgAppliances.Rows.Add() 
     End If 
    End If 
End Sub 

但是,當我加入了一些代碼:

Private Sub dgAppliances_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgAppliances.CellContentClick 
    If e.ColumnIndex <> 2 Then 
     Exit Sub 
    Else 
     If Me.dgAppliances.RowCount - 1 = 20 Then 
      MsgBox("Maximum of 20 appliances only.") 
     Else 
      Me.dgAppliances.Rows.Add() 
      Dim cell As DataGridViewButtonCell = dgAppliances.Rows(0).Cells(2) 
      cell.Value = String.Empty 
      cell = New DataGridViewColumn() 
      cell.ReadOnly = True 
     End If 
    End If 
End Sub 

此行電池=新的DataGridViewColumn()有錯誤。

它說'System.Windows.Forms.DataGridViewColumn'不能轉換爲'System.Windows.Forms.DataGridViewButtonCell'。

任何人都可以幫助我嗎? TIA。

Here's the sample image.

回答

0

你試圖分配一個DataGridViewColumnDataGridViewButtonCell - 整個到一個細胞

也許你的意圖是:cell = New DataGridViewTextBoxCell()?但即便如此,如果你只在最後一排

試圖

地方的按鈕,然後你會碰上Adding Different DataGridView Cell Types to a Column問題。你可以做如下轉換:

Me.dataGridView1.ColumnCount = 3 
Me.dataGridView1.AllowUserToAddRows = False 
Me.dataGridView1.AllowUserToDeleteRows = False 
Me.dataGridView1.RowCount = 1 
Me.dataGridView1(2, 0) = New DataGridViewButtonCell() 

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataGridView1.CellContentClick 
    If TypeOf Me.dataGridView1(e.ColumnIndex, e.RowIndex) Is DataGridViewButtonCell Then 
     If Me.dataGridView1.RowCount - 1 = 20 Then 
      MessageBox.Show("Maximum of 20 appliances only.") 
     Else 
      Me.dataGridView1.Rows.Add() 
      Me.dataGridView1(e.ColumnIndex, e.RowIndex) = New DataGridViewTextBoxCell() 
      Me.dataGridView1(e.ColumnIndex, e.RowIndex).[ReadOnly] = True 
      Me.dataGridView1(e.ColumnIndex, Me.dataGridView1.RowCount - 1) = New DataGridViewButtonCell() 
     End If 
    End If 
End Sub 
+0

哇。你是最好的!!十分感謝你的幫助。 :)))它的工作原理,我正在努力使以前的行刪除按鈕。 :)非常感謝你,希望你也能幫助我。 :) –

+0

在這種情況下,根本不需要轉換單元格。從頭開始將該列設置爲「DataGridViewButtonColumn」。然後在你的'CellContentClick'事件中,如果你點擊一個'DataGridViewButtonCell',檢查它是否是網格中的最後一行。如果是,請添加另一行。如果不是,請刪除點擊的行。唯一需要使用的部分是將按鈕文本從「添加」更改爲「刪除」。 – OhBeWise

+0

我知道了,先生。再次感謝你。 :)) –