找回密码
 立即注册

QQ登录

只需一步,快速开始

miyaminn

论坛元老

48

主题

121

帖子

2万

积分

论坛元老

积分
22182

活字格认证

miyaminn
论坛元老   /  发表于:2014-7-25 14:16  /   查看:5962  /  回复:7
Spread的列的宽度自己拖动的很宽,为什么双击两列中间的线,
列宽就变了呢?需要设置什么属性吗?还是要加代码?

7 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-7-25 16:22:00
沙发
回复 1楼miyaminn的帖子

请问是要禁止“双击自动调整列宽”的行为吗?可以通过以下代码设置:

  1.             this.fpSpread1.ActiveSheet.Columns[0].Resizable = false;
复制代码
回复 使用道具 举报
miyaminn
论坛元老   /  发表于:2014-7-25 18:15:00
板凳
回复 2楼iceman的帖子

不是,比如有A,B,C三列,这三列的列宽都不是默认的列宽。
当双击A与B之间的线时,A的列宽就会变动,
this.fpSpread1.ActiveSheet.Columns[0].Resizable = false;
这句代码确认可以,但是写了后,我就无法拖动A列的列宽了。
现在既想拖动列宽,也不想要双击中间的线的时候,列宽变动。
这要如何实现呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-28 17:56:00
地板
回复 3楼miyaminn的帖子

不好意思,当前 Spread 还没有相应的数据来响应双击调整列宽的这个动作。
回复 使用道具 举报
miyaminn
论坛元老   /  发表于:2014-7-29 08:58:00
5#
回复 4楼iceman的帖子

那这就是Bug了啊!我本来就调整了想要的列宽,可是不小心
双击了两列中间的线,列宽就变了啊。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-29 18:12:00
6#
回复 5楼miyaminn的帖子

这么设计的目的初衷是方便用户使用,但是没有暴露相应的接口。
这个问题我会反馈给产品组,看能否在后续版本中添加相应事件。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-6 11:16:00
7#
回复 5楼miyaminn的帖子

您提交了产品需求,为了表示感谢,给您分发 300 金币。可以用于兑换论坛奖品。
金币规则:点击进入
礼品列表:点击进入
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-8 12:30:00
8#
回复 5楼miyaminn的帖子

问题可以通过以下方法解决:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.MouseDown += fpSpread1_MouseDown;
  4.             this.fpSpread1.MouseUp += fpSpread1_MouseUp;
  5.         }

  6.         private void fpSpread1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  7.         {
  8.             // Check whether double click or not
  9.             if (e.Clicks == 2)
  10.             {
  11.                 FarPoint.Win.Spread.HitTestInformation ret = fpSpread1.HitTest(e.X, e.Y);
  12.                 if ((ret.Type == FarPoint.Win.Spread.HitTestType.ColumnHeader))
  13.                 {
  14.                     if (ret.HeaderInfo.InColumnResize)
  15.                     {
  16.                         // unable to resize
  17.                         for (int index = 0; index <= fpSpread1.ActiveSheet.ColumnCount - 1; index++)
  18.                         {
  19.                             fpSpread1.ActiveSheet.Columns[index].Resizable = false;
  20.                         }
  21.                     }
  22.                 }
  23.             }
  24.         }

  25.         private void fpSpread1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  26.         {
  27.             if (fpSpread1.ActiveSheet.Columns[0].Resizable == false)
  28.             {
  29.                 // enable to resize
  30.                 for (int index = 0; index <= fpSpread1.ActiveSheet.ColumnCount - 1; index++)
  31.                 {
  32.                     fpSpread1.ActiveSheet.Columns[index].Resizable = true;
  33.                 }
  34.             }
  35.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部