0

私は DataGridView を持っていて、グリッドにボタンを表示するセルとボタンを含まないセルを持つ列が必要です。この問題を解決するために、DataGridViewButtonColumn を追加し、列に行を追加するために呼び出すこのメソッドを作成しました。

 private void AttachNewRow(bool validRow)
 {
     DataGridViewRow newRow = GetNewRow();
     if (validRow)
     {
         newRow.Cells["Info"].Value = "Click me";
     }
     else
     {
         // Here I would like to hide the button in the cell
         newRow.Cells["Info"].Value = null;
     }
 }

問題は、セルの値を null に設定すると例外が発生することです。これらのセルの一部をボタンなしで表示するにはどうすればよいですか? ありがとうございました

4

2 に答える 2

2

あなたが話しているGetNewRow()戻り値のように見えます すでに挿入されています。RowDGV

Column「Info」に が含まれているかどうかをその関数が認識している場合Button、それを渡すことができますTag

if (somecondiiotn) newRow.Columns["Info"].Tag = "Button";

次に、次のように記述できます。

private void AttachNewRow()
{
    DataGridViewRow newRow = GetNewRow();
    if ( newRow.Cells["Info"].Tag == null || 
         newRow.Cells["Info"].Tag != "Button") return;
    //..

呼び出すコードAttachNewRow()に必要な知識がある場合は、代わりにそれをパラメーターで渡すことができます。

private void AttachNewRow(bool infoButton)

知識が後でしか利用できない場合でも、個々のセルを変更できます。

アップデート:

条件をメソッドに渡しているので、それに応じて行動できます。

コードで例外が発生する理由がわかりません-わかりません。しかし、実際に非表示にButtonするには、セルを「通常」に変更する必要がありますDataGridViewTextBoxCell

else
{
   DataGridViewCell cell = new DataGridViewTextBoxCell();
   newRow.Cells["Info"] = cell;
于 2015-01-15T16:43:49.540 に答える