2012-03-15 16 views
1

私のデータグリッドには2つのテキストボックス列と2つのボタン列があります。私は、ユーザーがボタンをクリックすると隣接するテキストボックスのセルが編集モードになり、カーソルがそこに置かれることを試みていました。DataGridViewTextBoxColumn、セルコンテンツの先頭にカーソルを設定します

私のテキストボックスの列は読み取り専用モードです。

だから私は

private void dgView_CellEnter(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex == 2) 
     { 
      DataGridView dgv = (DataGridView)sender; 
      DataGridViewTextBoxCell textBoxCell = dgv.CurrentCell as DataGridViewTextBoxCell; 
      if (textBoxCell != null) 
      { 
       dgv.BeginEdit(true); 
      } 
     } 
    } 

が、私はエラーを取得していないのですが、私の目的は果たしていないことを入力して、セル内のコードを書きました。テキストボックスセルが編集モードになっておらず、カーソルがテキストボックスセルに配置されていません。だから私に教えてくださいと私はボタンをクリックすると隣のテキストボックスのセルが編集モードで来るだろうとカーソルがそこで点滅する結果として私のコードを整理してください。

答えて

2

CellClickイベントを使用してみてください。 uは私のコードを修正plzzでき

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { 
     if (e.RowIndex == 2) { 
      DataGridView dgv = (DataGridView)sender; 
      DataGridViewCell textBoxCell = dgv.Rows[e.RowIndex].Cells[col_index]; 
      if (textBoxCell != null) { 
       dataGridView1.CurrentCell = textBoxCell; 
       dgv.BeginEdit(true); 
      } 
     } 
    } 
+0

「オペレーションは、SetCurrentCellAddressCore関数へのリエントラントコールをもたらすため、有効ではありません」というエラーが表示されます。行dataGridView1.CurrentCell = textBoxCellの場合; – Thomas

+0

'CellEnter'イベントを使っても、上記のように' CellClick'を試してみるとエラーになります – ionden

+0

私は間違いを犯しました...今は大丈夫です。ありがとう – Thomas

2

まず、フォーカスをグリッドに設定し、次に現在のセルを設定します。

dgv.Focus() = true; 
dgv.CurrentCell = dgv[0,2]; 

がここに上からあなたのコードを使用した例です。

private void dgView_CellEnter(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex == 2) 
    { 
     DataGridView dgv = (DataGridView)sender; 
     DataGridViewTextBoxCell textBoxCell = dgv.CurrentCell as DataGridViewTextBoxCell; 
     if (textBoxCell != null) 
     { 
      dgv.BeginEdit(true); 
      dgv.Focus() = true; 
      int col = e.ColumnIndex; 
      dgv.CurrentCell = dgv[2,col]; 
     } 
    } 
} 
+0

:あなたは本当にFocus()がちょうどCurrentCellBeginEditを設定呼び出す必要はありません。 – Thomas

+0

@トーマス:あなたはそれを持っています。私は私の答えを編集しました。私がもう助けることができるかどうか私に教えてください。 – msigman

+0

「オペレーションは有効ではありません。なぜなら、SetCurrentCellAddressCore関数へのリエントラントコールが発生するためです。」というエラーが発生しています。行dgv.CurrentCell = dgv [2、col]のために。 – Thomas

0

ます。private void dataGridView1_CellMouseEnter(オブジェクト送信者、DataGridViewCellEventArgs E) {

var dataGridView = (sender as DataGridView); 

if (e.ColumnIndex == "Your desire column index here") 
{ 
      dataGridView.Cursor = Cursors.Hand; 
} 
else 
{ 
      dataGridView.Cursor = Cursors.Default; 
} 
関連する問題