请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

taoyuansoft

中级会员

76

主题

202

帖子

864

积分

中级会员

积分
864
taoyuansoft
中级会员   /  发表于:2022-5-25 00:07  /   查看:1406  /  回复:1
10金币

现在有一个场景,使用了FlexGrid,但不希望使用FlexGrid自带的横向滚动条,希望能够使用一个单独的C1HScrollBar控件来控制这个FlexGrid的横向滚动

现在已知可以在ScrollBar的Scroll事件中,去处理FlexGrid的ScrollPosition属性

但存在两个问题:

1. 在Scoll事件中,只有e.OldValue和e.NewValue可用,这是滚动条的位移变化,但是和FlexGrid不匹配,结果是,ScrollBar移动了很远,FlexGrid才滚动了一点,如何才能计算其移动的比例?

2. ScrollBar的特点应该是,当可滚动范围越小,其内部的那个Bar的长度就越长,这个应该如何设置?

最佳答案

查看完整内容

没法直接获取可滚动范围,建议可以模拟把表格滚动到最后一行最后一列,然后再去获取最大的scrollpositon,参考代码

1 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-5-25 00:07:48
来自 2#
没法直接获取可滚动范围,建议可以模拟把表格滚动到最后一行最后一列,然后再去获取最大的scrollpositon,参考代码

  1.         private void testToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             c1FlexGrid1.TopRow = c1FlexGrid1.Rows.Count - 1;
  4.             c1FlexGrid1.LeftCol = c1FlexGrid1.Cols.Count - 1;
  5.             var point = c1FlexGrid1.ScrollPosition;
  6.             hScrollBar1.Minimum = 0;
  7.             hScrollBar1.Maximum = -point.X;
  8.             hScrollBar1.Scroll += HScrollBar1_Scroll;
  9.             c1FlexGrid1.TopRow = 0;
  10.             c1FlexGrid1.LeftCol = 0;




  11.         }

  12.         private void HScrollBar1_Scroll(object sender, ScrollEventArgs e)
  13.         {
  14.             c1FlexGrid1.ScrollPosition = new Point(-hScrollBar1.Value ,c1FlexGrid1.ScrollPosition.Y);
  15.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部