GetPreferredHeight获取单元格高度
准备获取一个文本单元格中获取最优高度,此单元格已设置为text类型,.multiline,wordwrap均是true.并且使用了columnspan。GetPreferredHeight方法好像不支持跨列呢。请教如何在winform中实现文本单元格求最优高度。谢谢! 回复 1楼xiechenming的帖子
你好:
思想就是将每列的WordWrap设置我True,然后用Spread的EditModeOff事件去获取最优行高
测试代码如下,请参考:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' テキスト型セルを設定します
Dim tcell As New FarPoint.Win.Spread.CellType.TextCellType()
tcell.WordWrap = True
FpSpread1.ActiveSheet.Columns(1).CellType = tcell
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
' 最も高さのあるテキストの高さに設定します
FpSpread1.ActiveSheet.Rows(0).Height = FpSpread1.ActiveSheet.GetPreferredRowHeight(0)
End Sub 尝试过了,还是不行。
单元格内的文本是初始化生成的,不需要编辑,委托用不上啊
回复 3楼xiechenming的帖子
你在赋值之后加上如下代码
FpSpread1.ActiveSheet.Rows(0).Height = FpSpread1.ActiveSheet.GetPreferredRowHeight(0)
如果你的Spread只是只读的,不会对其收入力的话,那个EditModeOff时间就不需要写了 补充了代码,效果就是图2的效果,第一行高度被拉开了,但是明显不对 回复 5楼xiechenming的帖子
你好,我测试过的,是可以的,感觉你在代码哪里有重新设置了行高,
或者是哪个属性引起的,可否上传一下你的再现Demo。 截图里就是demo啊,难道不是columspan的原因?我感觉获取最优的行高是按一列宽度的单元格文本进行计算高度的。 您好,
我使用以下代码,没有能够重现问题,您看下是否遗漏了关键的步骤
fpSpread1.ActiveSheet.Cells.Text = "测试";
fpSpread1.ActiveSheet.Cells.ColumnSpan = 4;
fpSpread1.ActiveSheet.Cells.Text = "很长很长\n很长很长很长\n很长很长很长很长很长很\n长很长很长很长长很长很长很长长很长很长很长";
MaxNum = 12;
FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer ecr = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer();
ecr.WordWrap = true;
fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = ecr;
}
private void button1_Click(object sender, EventArgs e)
{
/**
float len_txt = 0;
for (int i = 0; i < MaxNum; i++)
{
len_txt = fpSpread1.ActiveSheet.GetPreferredColumnWidth(i);
fpSpread1.ActiveSheet.Columns.Width = len_txt;
}
* */
float len_txt = 0;
for (int i = 0; i < MaxNum; i++)
{
len_txt = fpSpread1.ActiveSheet.GetPreferredRowHeight(i);
fpSpread1.ActiveSheet.Rows.Height = len_txt;
}
}
另外,我测试的版本是最新8.1,不知道您的版本是多少? 的确可以了。
采用示例中的EnhancedColumnHeaderRenderer类就可以。为什么使用时是设置列头的样式重绘呢,可以对单元格进行类似重绘达到同样目的吗?
谢谢! 用EnhancedColumnHeaderRenderer设置样式后,单元格内容必须加换行符,否则显示不全内容,怎么办呢?
页:
[1]
2