找回密码
 立即注册

QQ登录

只需一步,快速开始

gj_fwd

论坛元老

7

主题

25

帖子

6035

积分

论坛元老

积分
6035

活字格认证

gj_fwd
论坛元老   /  发表于:2014-4-28 12:25  /   查看:7745  /  回复:7
如题

7 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-4-28 15:09:00
沙发
回复 1楼gj_fwd的帖子

能再补充一下您的需求吗?  

我理解的是您需要C1FlexGridCell的文字自动Wrap, 或者字体的Font变小?
回复 使用道具 举报
gj_fwd
论坛元老   /  发表于:2014-4-28 15:53:00
板凳
字体不变,自动回行。或回车符换行。
根据行数变化来改变行高
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-4-28 17:02:00
地板
回复 3楼gj_fwd的帖子

帮您找了一个例子,通过OwnerDrawCell 自绘实现Wrap效果,供您参考:


本帖子中包含更多资源

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

x
回复 使用道具 举报
gj_fwd
论坛元老   /  发表于:2014-4-29 09:40:00
5#
private void Form1_Load(object sender, EventArgs e)
        {
            c1FlexGrid1.Rows[1].Height = 60; //这一句已经把行高限死了!
            c1FlexGrid1.Cols[1].Width = 150;
            c1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw;
            c1FlexGrid1.OwnerDrawCell += new C1.Win.C1FlexGrid.OwnerDrawCellEventHandler(c1FlexGrid1_OwnerDrawCell);
        }

        void c1FlexGrid1_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
        {
            if (e.Col == 1 & e.Row == 1)
            {
                dynamic builder = new StringBuilder();
                dynamic lines = e.Text.Split(Convert.ToChar("\n"));
                foreach (string line in lines)
                {
                    for (int index = 0; index <= line.Length - 1; index++)
                    {
                        builder.Append(line[index]);
                        if (index % 10 == 9)
                        {
                            builder.Append("\n");
                        }
                    }
                } //  每10个字符断行,再显示出来,是的,字符串行数是增加了,但是行高没有受到影响呀,貌似与要求不符。
                dynamic brush = new SolidBrush(e.Style.ForeColor);
                dynamic rect = new Rectangle(e.Bounds.Location, new Size(e.Bounds.Width, e.Bounds.Height));
                e.Graphics.DrawString(builder.ToString(), e.Style.Font, brush, rect);
                brush.Dispose();
                e.Handled = true;
            }


        }
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-4-29 10:20:00
6#
回复 5楼gj_fwd的帖子

能否这样尝试一下:
在输入文字或者绑定文字后,判断文字占用的总体高度--宽度不便的情况下,然后设置当前行的高度。

参考代码如下:

  1. c1FlexGrid1.Styles[CellStyleEnum.Normal].WordWrap = true;
  2. c1FlexGrid1.AllowResizing = AllowResizingEnum.Rows;
  3. c1FlexGrid1.AutoSizeRows();
复制代码
回复 使用道具 举报
gj_fwd
论坛元老   /  发表于:2014-4-29 16:31:00
7#
谢了,问题解决!
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-4-29 17:06:00
8#
回复 7楼gj_fwd的帖子

客气了, 此贴关闭,欢迎有问题开新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部