簡體   English   中英

Datagridview取消對填充列的拖放

[英]Datagridview Cancel Drag and Drop on Filler Column

我有一個將AllowUserToOrderColumns屬性設置為true的datagridview。

我在網格末尾還有一列,其中AutoSizeMode設置為填充,這用於填充網格,以便行看起來“完整”

我如何標記此列以僅禁用對該列的重新排序?

我已經嘗試了以下類似的方法

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

哪個帖子如何在AllowUserToOrderColumns = true時建議如何在datagridview中拖動列

但是,嘗試執行此事件中想做的事情會引發錯誤,因為您無法在要調整的列上設置顯示索引。

問候。

您可以使用SynchronisationContextPost方法。

在C#中,例如:

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 = ... ,因為已移動的列可以是另一列,並且可以在TheFillerColumn之后TheFillerColumn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM