【问题标题】:Determining if Text in Particular DataGridView Cell is Wrapping确定特定 DataGridView 单元格中的文本是否正在换行
【发布时间】:2011-05-06 19:02:24
【问题描述】:

我在一个表单上有一个数据绑定数据网格视图,该表单有一个可以包装的文本列。刷新列时,即使行的内容被换行(因此是多行),每行的高度也会恢复为单行高度。

我需要能够以编程方式确定特定行的列中的数据当前是否正在换行。是否有一个属性可以检查数据是否足够长以使其成为多行?

【问题讨论】:

标签: c# datagridview datagridviewtextboxcell


【解决方案1】:

我认为您在问几个不同的问题;两者的答案都是“是”。

首先,文本的长度或格式。检查单元格的值作为字符串,看它是否包含换行符,或者它是否比 X 个字符长(我把想出一个好的 X 的练习留给你):

if(gridView.Rows[i].Cells[j].Value.ToString().Contains(Environment.NewLine)
      || gridView.Rows[i].Cells[j].Value.ToString().Length > x)
   ...

其次,还可以判断一行当前是否以自动换行方式显示;如果是,它的大小应该是水平和垂直的组合:

if(gridView.Rows[i].Cells[j].Style.WrapMode = DataGridViewTriState.True)
   ...

【讨论】:

  • 包装后的 .Value 看起来不包含任何换行符。
  • 这很可能是真的;如果实际字符串没有换行符,则文本将根据其他分词符(主要是空格)进行拆分。换行不会仅仅因为它被换行而被添加到字符串值中,就像记事本在设置为自动换行时不会在您输入的文本中添加换行一样。但是,如果字符串确实有换行符,您通常应该尊重它们,如果 WrapMode 未设置为 Yes,则不会发生这种情况。
【解决方案2】:

将以下内容添加到您的代码中:

string nl = Environment.NewLine;
dataGridView.Rows.Add(str1 + nl + str2);

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 2011-06-22
    • 2011-08-21
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多