winforms DataGridView将冻结列放在最右侧

r55awzrz  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(200)

我在WinForms 2.0应用程序中有一个DataGridView,它有很多列,即使在最大化时用户也必须滚动才能看到所有列。最右边的列是一个删除按钮。我们希望始终显示删除按钮,而用户不必水平滚动。
当我尝试设置column.Frozen = true;时,它会删除我的水平滚动条,并使之前的所有列冻结。根据Microsoft,这是设计好的。
有人能解决这个问题吗?

zsbz8rwp

zsbz8rwp1#

这是VS 2005的错误报告:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=117002&wa=wsignin1.0#
看起来微软并不想纠正这个问题。“按设计”?真是个笑话。

uajslkp6

uajslkp62#

试试这个:

var cols = dcols.ToArray();//dcols is the DataGridViewColumn List wait to add to DataGridView
    if (cols.Last().Frozen)
    {
        _this.RightToLeft = RightToLeft.Yes;
        cols = cols.Reverse().ToArray();
    } 
    _this.Columns.AddRange(cols);
    //Note that DataGridView does not allow freezing on both sides at the same time, or freezing some columns in the middle.

你会遇到一个问题。滚动条将被定位到最右边。然后,你可以尝试下面的代码:

//OnDataBindingComplete
        if (this.Columns.Count > 0)
            this.FirstDisplayedScrollingColumnIndex = this.Columns.Count - 1;

相关问题