当选择模式为FullRowSelect时,切换DataGridView行选择

6

我有一个DataGridView,其中SelectionMode = FullRowSelect,MultiSelect = False。

当用户单击一行时,如预期那样选择该行。但是,再次单击同一行不会取消选择该行。

如何使行选择在选定和未选定之间切换?

1个回答

4
据我所知,没有现成的功能可以做到这一点。
我使用以下代码实现了你要求的效果:
public partial class Form1 : Form
{
    private bool selectionChanged;

    public Form1()
    {            
        InitializeComponent();
    }

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (!selectionChanged)
        {
            dataGridView1.ClearSelection();
            selectionChanged = true;
        }
        else
        {
            selectionChanged = false;
        }
    }

    private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
        selectionChanged = true;
    }

}

这段代码使用了dataGridView的SelectionChanged和CellClick事件,并使用类级别变量来持有选择状态。


这个很好用,谢谢。我在扩展DataGridView的类中使用了一个略微不同的变体,并通过覆盖InitLayout来注册事件。 - Daniel Ballinger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接