none
DataGridViewComboBoxCell多选问题 RRS feed

  • 问题

  • 在DataGridView中,想实现这样的效果:同时修改多个选中的单元格,文本框现已实现。
    但是DataGridViewComboBoxCell单元格,由于默认需要点击两次才出弹出下拉列表,因此我在CellEnter事件中增加了:SendKeys.Send("{F4}");这样单元格收到输入焦点时就弹出下拉选项,但也就无法多选。

    请问如何实现单击DataGridViewComboBoxCell单元格时展开下拉项,同时可以选择多个DataGridViewComboBoxCell单元格?
    并且如何使单击一个单元格弹出下拉项时其它选中单元格仍保持选中状态。

    最终目的是想做一个批量修改功能:修改了一个单元格后,其它选中单元格同时改变
    2021年1月23日 15:24

全部回复

  • 你好 leon1526,

    经过我的测试,我重现了您的问题。

    我建议您可以添加下面的事件来解决点击两次才弹出下拉列表的问题。

     private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
            {
                bool validClick = (e.RowIndex != -1 && e.ColumnIndex != -1); //Make sure the clicked row/column is valid.
                var datagridview = sender as DataGridView;
    
                // Check to make sure the cell clicked is the cell containing the combobox 
                if (datagridview.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn && validClick)
                {
                    datagridview.BeginEdit(true);
                    ((ComboBox)datagridview.EditingControl).DroppedDown = true;
                }
            }
    
            private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }

    你可以参照 How to activate combobox on first click (Datagridview) 来更深入的了解这个问题。

    至于你说的批量修改功能我不是太理解,既然我们已经可以通过手动点击选择,为什么还要设置这个功能呢,如果你实在想要做这个功能,你可以看下这个链接:Event that fires during DataGridViewComboBoxColumn SelectedIndexChanged

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2021年1月25日 3:12
    版主