我有一个函数可以快速将值应用于一系列选定的单元格
效果很好,除非该列已被用户单击(排序)然后它似乎尝试多次将值分配给同一行。
有人能帮忙吗?
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();
}
我试过手动设置排序然后分配值。
我也试过将值放在单元格标签中,然后循环并分配标签(从一段时间直到没有找到标签),我几乎得到了同样的事情