繁体   English   中英

如果填充当前行宽,则WinForm换行文本

[英]WinForm wrap text if current row width is filled

我在WinForm中有DataGridView。 我将AutoSizeColumnsMode设置为Fill ,因为如果用户调整窗口大小,我不需要空格。

我想要实现的目标。 例如,用户在特定单元格中键入一些文本。 当文本宽度变为单元格宽度时,文本必须是新行的一个。
怎么样:

|Cell Header|
-------------
|text-text  |

|Cell Header|
-------------
|text-text  |
|more text  |
|on the new |
|line       |

我的列可由用户调整大小。 所以这:

|Cell Header|
-------------
|text-text  |
|more text  |
|on the new |
|line       |

可能会这样:

|Cell Header        |
---------------------
|text-text more text|
|on the new line    |

我从其他SO答案中尝试过:

  • AutoResizeRowsMode设置为AllCells - 没有帮助
  • DefaultCellStyle.WrapMode设置为True - ddin't help

我怎么能实现这个呢?

编辑:列设置:

在此输入图像描述

编辑#2:

在此输入图像描述 在此输入图像描述

设置RowsDefaultCellStyle.Wrapmode = true而不是DefaultCellStyle.WrapMode = true

在此输入图像描述

我使用了两个网格的默认设置。 这是我的设置:

在此输入图像描述

这是代码

在此输入图像描述

除了为列设置包装模式和自动大小模式之外,还需要为行设置大小模式。

public class Model
{
    public int Id { get; set; }
    public string Text { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
    var list = new List<Model>
    {
        new Model{Id = 1, Text = "Lorem ipsum" },
        new Model{Id = 2, Text = "Lorem ipsum dolor sit amet." },
        new Model{Id = 3, Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit." },
    };
    dataGridView1.DataSource = list;
    dataGridView1.Columns["Text"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    dataGridView1.Columns["Text"].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM