2017-02-24 316 views
1

こんにちは、クリックするたびに行を追加する3列目のボタンを非表示または無効にしたいとします。混乱は、前のボタンがアクティブであり、行を追加することができます。最後の行にのみボタンを配置するにはどうすればよいですか?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

あなたはDataGridViewButtonCellDataGridViewColumnを割り当てるしようとしている - 単一セルに全体

おそらく、あなたの意図は: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

Woah。あなたは最高です!!助けてくれてありがとう。 :)))それは動作します、私はボタンを削除する前の行を作ることに取り組んでいます。 :)ありがとう、私もそれを手伝ってくれることを願っています。 :) –

+0

この場合、セルをまったく変換する必要はありません。最初から列を 'DataGridViewButtonColumn'にします。次に 'CellContentClick'イベントで、' DataGridViewButtonCell'をクリックした場合は、グリッド内の最後の行かどうかを確認します。そうであれば、別の行を追加します。そうでない場合は、クリックされた行を削除します。唯一の部分は、ボタンのテキストを「追加」から「削除」に変更することです。 – OhBeWise

+0

私はそれを持っています。ありがとうございました。 :)) –

関連する問題