DataGridViewTextBoxColumn,将光标设置在单元格内容的开头

时间:2012-03-15 12:17:56

标签: c# winforms

我的datagrid有两个文本框列和两个按钮列。我试图在用户点击按钮时,相邻的文本框单元格将处于编辑模式,光标将放在那里。

我的文本框列处于只读模式。

所以我在单元格中输入代码

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);
            }
        }
    }

我没有收到错误但我的目标没有实现。文本框单元格未进入编辑模式,光标未放置在文本框单元格上。因此,当我点击按钮然后相邻的文本框单元格将进入编辑模式并且光标将在那里闪烁时,请告诉我并纠正我的代码。

3 个答案:

答案 0 :(得分: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]; 
        }
    }
}

答案 1 :(得分:2)

尝试使用CellClick事件。您实际上不需要拨打Focus()来设置CurrentCellBeginEdit

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);
            }
        }
    }

答案 2 :(得分:0)

private void dataGridView1_CellMouseEnter(object sender,DataGridViewCellEventArgs e) {

var dataGridView = (sender as DataGridView);

if (e.ColumnIndex == "Your desire column index here")
{
            dataGridView.Cursor = Cursors.Hand;
}
else
{
            dataGridView.Cursor = Cursors.Default;
}