2012-03-02 29 views
4

私はデータベースに接続されたdatagridviewを持っています。私は、DataGridviewでデータを編集できるようにするためのチェックボックスを持っています。チェックボックスをオンにすると、datagridviewの1列だけを編集できます。編集後、保存ボタンをクリックするとデータベースに反映されます。チェックボックスがオフの場合、編集は無効です。プログラムによるデータグリッドビューの編集を許可するにはどうすればよいですか?

私はこのような何かを試してみた:

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.CheckState == CheckState.Checked) 
     { 
      dataGridView1.CurrentRow.ReadOnly = false; 
      dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2; 
     } 
     else if (checkBox1.CheckState == CheckState.Unchecked) 
     { 
      dataGridView1.ReadOnly = true; 
     } 
    } 

このコードを編集する列を選択する概念をミス。

+0

OK。チェックボックスは、データを編集できるかどうか、正しいかどうかを制御します。しかし、編集する列を選択することも欲しいのですか?どのように彼らはUIでそれを行うことになっていますか? –

答えて

0

目的に応じて、無効にする列のみを設定する必要があります。

dataGridView1.Columns[0].ReadOnly = true;    
dataGridView1.Columns[1].ReadOnly = false; 

ただし、これを行いますか?列全体をブロックしますか?

0

あなたのDataGridViewの独自の読み取り専用プロパティがfalseに設定されている場合は、このセクションで提供されるヘルプだけ働くことができる代わりに

dataGridView1.CurrentRow.ReadOnly=false; 
2
for (int i = 0; i <= dataGridView1.ColumnCount - 1; i++) 
    { 
     dataGridView1.Columns[i].ReadOnly = true; 
    } 
2

if(dataGridView1.SelectedCells.Count>0) dataGridView1.SelectedCells[0].ReadOnly=false; 

を試すことができます。そうでない場合は、各列の読み取り専用プロパティが維持されます。スマートタグを使用して "make grid editable"を選択して有効にすると、readonlyプロパティはfalseに設定されます。また、どのような新世代のグリッドに素敵なのは、

foreach (var col in grid1.columns) 

であなただけの「偽column1.ReadOnly =」選択された列の名前を使用するか、デフォルトとしてできるようにあなたが列を見つける必要がないということです。列挙子にはもちろんそれ自身の利点があります。

関連する問題