这里有一个自动缩小字体自动换行的例子,逻辑是先缩小,到一定程度后再换行
如果是直接强制换行再缩小字体的话,这个最终文字实际就是多行了,文字缩小后等于说要重新排列文字,功能实现很困难
可以自定义一个CellType继承TextCellType,重写PaintCell方法
- private class CTextCellType : FarPoint.Win.Spread.CellType.TextCellType
- {
-
- public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
- {
- if (value != null)
- {
- System.Drawing.Font font = appearance.Font;
- while (g.MeasureString(value.ToString(),font).Width >= r.Width && font.Size >= 5)
- {
- font = new System.Drawing.Font(font.FontFamily, font.Size - 0.5f, font.Style);
- }
-
- appearance.Font = font;
- }
- base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
- }
- }
复制代码
调用办法
- CTextCellType ctc = new CTextCellType();
- ctc.Multiline = true;
- ctc.WordWrap = true;
- fpSpread1.ActiveSheet.Columns[0].CellType = ctc;
复制代码 |