右侧的Datagridview冻结列

时间:2013-07-29 10:03:23

标签: c# winforms datagridview datagridviewcolumn

我有一个带有

列的datagridview
col A | col B | ... | col M | col N 

现在我要冻结右侧的col N,这样当用户水平滚动数据网格视图时,列A,...,M可以水平滚动,但col N仍然处于冻结状态。

现在我尝试为Frozen设置col N属性,但冻结列左侧的所有列也都被冻结,这是我不想要的。 我能够提出的最好的方法是反转绑定到DataGridView的DataTable的列,以便它现在具有顺序

col N | col M | ... | col B | col A

然后从RightToLeft绘制DataGridView,以便再次反转列,然后显示为

col A | col B | ... | col M | col N 

我尝试的另一个解决方案是提取必须冻结的最右边的列,并将它们放在右侧的不同DataGridView和原始DataGridView中的其余列,然后同步它们的垂直滚动。 现在我的问题是有没有更好的方法来做到这一点,如果不是我更喜欢上面哪一个?

或换句话说:

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

1 个答案:

答案 0 :(得分:1)

joe,在c#DataGridView中你可以冻结表格中间的列,只在它的开头,就像在excel中一样。这是有道理的,因为如果我们冻结中间列,那么我们不知道它应该如何反应。我们需要两个不同侧面的滚动条吗?

来自here你可以看到它是c#想要的行为:

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