【问题标题】:Toggle DataGridView row selection where SelectionMode is FullRowSelect切换 DataGridView 行选择,其中 SelectionMode 为 FullRowSelect
【发布时间】:2011-02-07 02:55:00
【问题描述】:

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

当用户点击一行时,它会按预期被选中。但是,再次单击同一行不会取消选择该行。

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

【问题讨论】:

    标签: winforms datagridview


    【解决方案1】:

    据我所知,没有现成的功能可以做到这一点。

    我设法通过以下代码获得了您要求的效果:

    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 注册事件的类中使用了这个的轻微变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多