2011-10-20 20 views
0

ユーザーがクリックしたときに自分の行(ハイライト表示)を選択するチェックボックスを持つ列を作成したいとします。私はこのコードを思いついた、仕事をしないで、どうすれば修正できるの?Datagridチェックボックスの列選択が正しく機能しない

これを行うには良い方法がありますか? (チェックボックスをオフにしても、行はハイライト表示のままです)。

private void dataGrid_CellClick(object sender, DataGridViewCellEventArgs e) 
     { 
      if (e.ColumnIndex == 0 && e.RowIndex != -1) 
      { 
       if (Convert.ToBoolean(dataGrid.Rows[e.RowIndex].Cells[0].Value) == true) 
        dataGrid.Rows[e.RowIndex].Selected = false; 
       else if (Convert.ToBoolean(dataGrid.Rows[e.RowIndex].Cells[0].Value) == false) 
        dataGrid.Rows[e.RowIndex].Selected = true; 
      } 
     } 

答えて

0

CellMouseUpは、スペースプレスでの選択には機能しません。
あなたが「本物」の選択を行うには持っていない場合、私は、セルの値の変更の行の背景色を変更したい、それははるかに簡単になるだろう:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.ColumnIndex == 0 && e.RowIndex != -1) 
    { 
     if (Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells[0].Value) == true) 
      dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Blue; 
     else if (Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells[0].Value) == false) 
      dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White; 
    } 
} 
1

CheckBoxの状態が更新された前CellClickイベントが発生しているようCellMouseUpイベントハンドラにロジックを置く試してみてください。

これは、CheckBoxesの現在の状態を取得するために、EditedFormattedValueプロパティ(セルの現在の書式設定された値を含む)を使用します。 MSDNから

Valueプロパティは、セルに含まれる実際のデータ・オブジェクトである、FormattedValue一方 は、このオブジェクトのフォーマットです。

セルが編集モードであり、値がコミットされていないかどうかにかかわらず、セルの現在の書式設定された値が格納されます。

ここでは動作例を示します。

void dataGrid_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    if (e.ColumnIndex == 0 && e.RowIndex != -1) 
    { 
     DataGridViewCheckBoxCell checkBoxCell = 
      dataGrid.Rows[e.RowIndex].Cells[0] as DataGridViewCheckBoxCell; 

     if (checkBoxCell != null) 
     { 
      dataGrid.Rows[e.RowIndex].Selected = Convert.ToBoolean(checkBoxCell.EditedFormattedValue); 
     } 
    } 
} 

これが役立ちます。

+0

おかげで、それは動作しますが、私も欲しいですチェックされた他の行を選択したままにしておくと、どうすればできますか? – funerr

関連する問題