我有一个数据网格视图,其AllowUserToOrderColumns属性设置为true。
我还在网格末尾有一个列,其中AutoSizeMode设置为fill,这用于填充网格以使行看起来“完整”
如何将此列标记为仅禁用此列的重新排序?
我尝试了类似下面的内容
Private Sub dgvAdjustments_ColumnDisplayIndexChanged(sender As Object, e As DataGridViewColumnEventArgs) Handles dgvAdjustments.ColumnDisplayIndexChanged
If e.Column Is TheFillerColumn Then
e.Column.DisplayIndex = theGrid.Columns.Count - 1
End If
End Sub
这篇文章How to get dragged column in datagridview when AllowUserToOrderColumns = true 建议
但是,在此事件中尝试执行我想要执行的操作会抛出错误,因为您无法在正在调整的列上设置显示索引。
问候。
答案 0 :(得分:1)
您可以使用SynchronisationContext
的{{1}}方法。
在C#中,您将拥有例如:
Post
另外,请不要private void dataGridView1_ColumnDisplayIndexChanged(object sender, DataGridViewColumnEventArgs e)
{
SynchronizationContext.Current.Post(delegate(object o)
{
if (Column1.DisplayIndex != 1)
Column1.DisplayIndex = 1;
}, null);
}
而是e.Column.DisplayIndex = ...
,因为移动的列可以是另一个,并在TheFillerColumn.DisplayIndex = ...
之后移动。