找回密码
 立即注册

QQ登录

只需一步,快速开始

xiechenming

注册会员

3

主题

11

帖子

107

积分

注册会员

积分
107

活字格认证

最新发帖
xiechenming
注册会员   /  发表于:2015-9-8 09:43  /   查看:10095  /  回复:14
准备获取一个文本单元格中获取最优高度,此单元格已设置为text类型,.multiline,wordwrap均是true.并且使用了columnspan。GetPreferredHeight方法好像不支持跨列呢。
请教如何在winform中实现文本单元格求最优高度。谢谢!

14 个回复

正序浏览
frank.zhang
社区贡献组   /  发表于:2015-9-10 13:34:00
15#
您好,
经过验证,跨列导致文本显示不全的问题,确实存在。我会将这个问题尽快提交给产品组,以确认是否是一个BUG。
如果有进一步的反馈,我会第一时间通知您。
回复 使用道具 举报
xiechenming
注册会员   /  发表于:2015-9-10 09:07:00
14#
回复 13楼iceman的帖子

先感谢版主耐心回复。

需求:在一个跨列的单元格中填入文本,文本能够在单元格中显示完整,并能够调整至此单元格的最优高度。
我尝试设置celltype为textcell,但是取不到最优高度。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-9 11:55:00
13#
回复 12楼xiechenming的帖子

请问您是希望在编辑状态下依旧保持多行样式吗?如果是,需要通过 RichTextCellType 单元格类型来实现。测试代码:


  1.             FarPoint.Win.Spread.CellType.RichTextCellType rtf = new FarPoint.Win.Spread.CellType.RichTextCellType();
  2.             rtf.WordWrap = true;
  3.             rtf.Multiline = true;
  4.             fpSpread1.ActiveSheet.Cells[0, 0].CellType = rtf;
  5.             fpSpread1.ActiveSheet.Columns[0].Width = 300;
  6.             fpSpread1.ActiveSheet.Rows[0].Height = 150;
  7.             fpSpread1.ActiveSheet.Cells[0, 0].Value = @"{\rtf1\ansi\ansicpg936 " + @"中文\par\par显示" + "}";
复制代码
回复 使用道具 举报
xiechenming
注册会员   /  发表于:2015-9-9 08:57:00
12#
回复 11楼frank.zhang的帖子

我测试发现wordwrap好像对文本编排不起作用
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-8 17:15:00
11#
您好
我提供的参考代码是true,您可以改为false
  1. ecr.WordWrap = true;
复制代码
回复 使用道具 举报
xiechenming
注册会员   /  发表于:2015-9-8 15:45:00
10#
用EnhancedColumnHeaderRenderer设置样式后,单元格内容必须加换行符,否则显示不全内容,怎么办呢?
回复 使用道具 举报
xiechenming
注册会员   /  发表于:2015-9-8 15:30:00
9#
的确可以了。
采用示例中的EnhancedColumnHeaderRenderer类就可以。为什么使用时是设置列头的样式重绘呢,可以对单元格进行类似重绘达到同样目的吗?
谢谢!
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-8 14:45:00
8#
您好,
我使用以下代码,没有能够重现问题,您看下是否遗漏了关键的步骤
  1.             fpSpread1.ActiveSheet.Cells[0, 0].Text = "测试";
  2.             fpSpread1.ActiveSheet.Cells[0,1].ColumnSpan = 4;
  3.             fpSpread1.ActiveSheet.Cells[0, 1].Text = "很长很长\n很长很长很长\n很长很长很长很长很长很\n长很长很长很长长很长很长很长长很长很长很长";
  4.             MaxNum = 12;

  5.             FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer ecr = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer();
  6.             ecr.WordWrap = true;
  7.             fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = ecr;
  8.         }

  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             /**
  12.             float len_txt = 0;
  13.             for (int i = 0; i < MaxNum; i++)
  14.             {
  15.                 len_txt = fpSpread1.ActiveSheet.GetPreferredColumnWidth(i);
  16.                 fpSpread1.ActiveSheet.Columns[i].Width = len_txt;
  17.             }
  18.              * */
  19.             float len_txt = 0;
  20.             for (int i = 0; i < MaxNum; i++)
  21.             {
  22.                 len_txt = fpSpread1.ActiveSheet.GetPreferredRowHeight(i);
  23.                 fpSpread1.ActiveSheet.Rows[i].Height = len_txt;
  24.             }
  25.         }
复制代码









另外,我测试的版本是最新8.1,不知道您的版本是多少?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
xiechenming
注册会员   /  发表于:2015-9-8 14:19:00
7#
截图里就是demo啊,难道不是columspan的原因?我感觉获取最优的行高是按一列宽度的单元格文本进行计算高度的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部