C1FlexGrid 设置固定列数量
您好:我想实现这个功能,在程序运行的时候,点击列固定按钮。
可以将前面四列变成固定的列,不随滚动条滚动。后面的列随滚动条滚动。
我目前采用的方法是直接在按钮的点击事件中,将Cols.Fixed = 4来设置更改固定列的数量。
但是这样操作会导致系统直接在grid中增加了四个固定的列而不是将前面的四个列变成固定列。
请问这个如何实现。
目前采用的数据绑定的方法是SortableBindingLIst
本帖最后由 Richard.Ma 于 2021-4-6 09:28 编辑
你需要的实际上是冻结行,在xaml或者后台代码中设置如下属性即可
FrozenColumns="3"
Richard.Ma 发表于 2021-4-6 08:59
你需要的实际上是冻结行,在xaml或者后台代码中设置如下属性即可
您好,
感谢您的回复。
我没有表述清楚。
不是冻结列,是固定列。(冻结列只是列冻结了不随滚动条滚动,不是我想要实现的功能)
实际上我要固定的这些列不仅是不随滚动条滚动。而且设置在这些列上的事件也不能被使用。
背景也改变,即使是行选择模式下,也不会有光标。 抱歉,目前无法实现在固定列中绑定数据 Richard.Ma 发表于 2021-4-6 10:55
抱歉,目前无法实现在固定列中绑定数据
您好:
感谢您的回答。
那么使用冻结列的情况下,
如何让冻结列上面的事件不触发,比如单元格的编辑事件,表头的排序事件等等,所有的事件都无法触发。这个怎么实现? 在行选择模式下,冻结列没有选中的背景怎么实现?
目前确实应该通过这种思路来实现,我验证后给你回复 Richard.Ma 发表于 2021-4-6 11:52
目前确实应该通过这种思路来实现,我验证后给你回复
您好,
以防万一,目前的进度共享给您。
目前提出的需求,按照您这边的方案就本上都实现了。
但是在行选择模式下,选中行的冻结列没有背景色目前无法实现。
还有,如果冻结列上有双击事件,这一行也有双击事件。在冻结行列的情况下,双击该列的单元格设置为不触发列上的事件,改行的行事件也无法触发了。。。 村东智叟 发表于 2021-4-8 10:06
您好,
以防万一,目前的进度共享给您。
目前提出的需求,按照您这边的方案就本上都实现了。
大概是这种需求
你说的冻结列再选中行的情况下仍然保存本来的样式,可以通过在OwnerDrawCell事件中加如下代码实现,需要注意的是需要将DrawMode属性设置为onwerdraw
if (e.Col < 3)
{
e.Style = c1FlexGrid2.Styles.Frozen;
}
另外为了让冻结列和固定列样式一致,可以直接将冻结列的样式进行设置,通过设计器或者代码都行,代码的话就是1FlexGrid2.Styles.Frozen的具体样式属性设置
你提到的冻结列上有双击事件,这一行也有双击事件,这个我不太明白,一般来说是通过
c1FlexGrid2.DoubleClick += C1FlexGrid2_DoubleClick;
这个事件来处理,在其中判断点击的是哪个单元格,如下代码即可实现,只有点击后面非冻结列时,才执行代码
private void C1FlexGrid2_DoubleClick(object sender, EventArgs e)
{
if (c1FlexGrid2.HitTest().Column > 2)
{
MessageBox.Show("执行方法");
}
}
页:
[1]
2