我有2列DataGridView。 SortMode of first设置为Automatic。
在这个网格中有很多行,当我在行中更改值时,例如从xyz到abc,我仍然处于此行WAS的位置。编辑的行跳到顶部。
我想中止这种自动排序,我想通过左键单击列进行调用排序。是
我找到了一些解决方案(下面的代码+我将SortMode设置为编程),但我的行仍在跳跃:/有没有解决方案来处理这个问题?
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
DataGridViewColumn newColumn =
dataGridView1.Columns[e.ColumnIndex];
SortOrder direction;
if (dataGridView1.SortOrder == SortOrder.Ascending)
{
dataGridView1.Sort(newColumn,
ListSortDirection.Ascending);
direction = SortOrder.Ascending;
}
else
{
dataGridView1.Sort(newColumn,
ListSortDirection.Descending);
direction = SortOrder.Descending;
}
newColumn.HeaderCell.SortGlyphDirection = direction;
}
}
答案 0 :(得分:0)
为什么不在捕获DataGridView的编辑事件时禁用排序?
private void dataGridView1_CellBeginEdit(object sender,
DataGridViewCellCancelEventArgs e)
{
foreach (DataGridViewColumn column in dataGridView1.Columns)
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
然后你可以通过恢复此行为来恢复排序(通过在列的RightClick事件或任何上下文菜单项或其他内容中再次恢复它)