DataGridView循环选择单元格C#

问题描述 投票:0回答:0

我有一个函数可以快速将值应用于一系列选定的单元格

效果很好,除非该列已被用户单击(排序)然后它似乎尝试多次将值分配给同一行。

有人能帮忙吗?

private static void QuickFill()
        {
            String inputVal = InputBox.Show("", "Assign value to all selected cells");
            if (inputVal is null) return;
            foreach (DataGridViewCell cell in DGV.SelectedCells)
            {
                try
                {
                    if (cell.ReadOnly == false)
                    {

                        if (inputVal == "")
                        {
                            cell.Value = DBNull.Value;
                        }
                        else if (cell.GetType().Name == "DataGridViewComboBoxCell")
                        {
                            string cmbString = "";
                            DataGridViewComboBoxCell cmbCell = (DataGridViewComboBoxCell)cell;
                            foreach (var itm in cmbCell.Items)
                            {
                                if (itm.GetType() == typeof(DataRowView))
                                {
                                    DataRowView drv = (DataRowView)itm;
                                    cmbString = drv.Row.ItemArray[0].ToString();
                                }
                                if (itm.GetType() == typeof(string))
                                {
                                    cmbString = itm.ToString();
                                }
                                if (cmbString.ToLower()==inputVal.ToLower())
                                {
                                    cell.Value = cmbString;
                                }
                            }
                            
                        } 
                        else
                        {
                            cell.Value = inputVal;
                        }
                    }
                }
                catch
                {
                    //ignore
                    continue;
                }
            }
            DGV.Focus();
        }

我试过手动设置排序然后分配值。

我也试过将值放在单元格标签中,然后循环并分配标签(从一段时间直到没有找到标签),我几乎得到了同样的事情

c# winforms datagridview
© www.soinside.com 2019 - 2024. All rights reserved.