点击TAB

时间:2017-05-17 07:56:08

标签: c# winforms datagridview tabs focus

我有一个winforms datagridview,当我点击TAB时,焦点矩形(虚线矩形)设置为一个单元格并开始从一个单元格移动到另一个单元格,因为我一直按下按钮,而我希望将矩形设置为整个行不仅仅是单元格,一旦我开始点击TAB,它应该从行移动到行

我尝试将selctionmode设置为fullrowselect但仍然是细胞的焦点设置。 enter image description here enter image description here

您能否建议我在此处实现目标的任何解决方法。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用SelectionMode作为FullRowSelect datagridview s KeyDown event,例如

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Tab)
    {
        int activeRow = dataGridView1.CurrentCell.RowIndex;
        if ((activeRow + 1) < dataGridView1.RowCount)
        {
            dataGridView1.CurrentCell = dataGridView1.Rows[activeRow+1].Cells[0];
        }
    }
}

同样对于选择矩形,您可以在CellPainting事件中添加以下代码

void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        if (e.ColumnIndex == this.dataGridView1.CurrentCell.ColumnIndex
            && e.RowIndex == this.dataGridView1.CurrentCell.RowIndex)
        {
            e.Paint(e.CellBounds, DataGridViewPaintParts.All& ~DataGridViewPaintParts.Border);
            using (Pen p = new Pen(Color.Black, 0))
            {
                Rectangle rect = e.CellBounds;
                rect.Width -= 2;
                rect.Height -= 2;
                e.Graphics.DrawRectangle(p, rect);
            }
            e.Handled = true;
        }
    }

答案 1 :(得分:0)

试试这个。,

使用标签:

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

使用Mouseclick:

dataGridView1.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;