C# Datagridview右侧冻结的列

C# Datagridview右侧冻结的列,c#,winforms,datagridview,datagridviewcolumn,C#,Winforms,Datagridview,Datagridviewcolumn,我有一个带有列的datagridview col A | col B | ... | col M | col N 现在我想冻结右侧的列N,这样当用户水平滚动datagridview时,列A,…,M可以水平滚动,但列N保持冻结状态 现在我已经尝试为coln设置freezed属性,但是冻结列左侧的所有列也被冻结,这是我不想要的。 我能想到的最好的方法是反转绑定到DataGridView的DataTable的列,这样它现在就有了顺序 col N | col M | ... | col B | co

我有一个带有列的datagridview

col A | col B | ... | col M | col N 
现在我想冻结右侧的
列N
,这样当用户水平滚动datagridview时,列A,…,M可以水平滚动,但
列N
保持冻结状态

现在我已经尝试为
coln
设置
freezed
属性,但是冻结列左侧的所有列也被冻结,这是我不想要的。 我能想到的最好的方法是反转绑定到DataGridView的DataTable的列,这样它现在就有了顺序

col N | col M | ... | col B | col A
然后从
右侧到左侧绘制DataGridView,使列再次反转,然后显示为

col A | col B | ... | col M | col N 
我尝试的另一个解决方案是提取必须冻结的最右边的列,并将它们放置在右侧的另一个DataGridView中,其余的列放置在原始DataGridView中,然后同步这两个列的垂直滚动。 现在我的问题是,有没有更好的方法来做到这一点,如果没有,我应该选择上面哪一种

换句话说:

如何在不冻结其他列的情况下冻结DATAGIDVIEW右侧的列?

< P>乔,在C<代码> DATAGIDVIEW中,可以在表中间冻结列,仅在开始时冻结,就像在Excel中一样。这是有道理的,因为如果我们冻结中间的柱子,那么我们不知道它在侧面会有什么反应。我们需要两个不同侧面的滚动条吗

从中可以看出,这是c#通缉犯的行为:


冻结列时,其左侧(或在从右向左的语言中为其右侧)的所有列也将冻结。冻结柱和未冻结柱分为两组。如果通过将AllowUserToOrderColumns属性设置为true来启用列重新定位,则用户无法将列从一个组拖动到另一个组。

在当前解决方案中,您不喜欢什么?我可以看到行标题的列是右对齐的,这可能是您不喜欢的?这以及在这两种情况下反转datatable中的列的开销,即从datatable到gridview,从gridview到datatable,由用户手动输入值,因为虽然用户认为他是在a列中输入值,但实际上他是在N列中输入值。我同意,但除了我建议的解决方法之外,还有其他解决方法吗?我几年前就尝试过,最后放弃了。除非您构建自己的控件,否则没有解决方法,我指的是包括paint()在内的整个控件。那不值得花时间。。。