gpt4 book ai didi

c# - DataGridView 中的自定义 WrapMode

转载 作者:行者123 更新时间:2023-11-30 17:23:46 25 4
gpt4 key购买 nike

我正在使用可编辑的 DataGridView Windows 窗体来显示变量列表,这些变量可以包含不同类型的信息,应用程序不知道其格式:路径、字符串、数字和很快。该表单正在使用源数据绑定(bind)。

有些值可能很长,我想将它们显示在几行而不是一条长的、部分可见的行上。原始的 WrapMode 不适合我的情况,因为它在空格字符上拆分行,这些字符并不总是存在:典型示例是由分号分隔的路径组成的长 PATH 变量,或十六进制数字。

在表单边框而不是特定字符处换行会很好,但只在必要时才这样做会更好。添加其他拆分位置,而不是空格字符,只会更好。

性能方面:网格行数永远不会很高:通常为 0 到 10,在某些极端情况下可能高达 50,通常每行的最大长度不应超过 4或 5 行包裹时。所以这不是什么大问题。

您建议如何做到这一点?

  • 通过插入 \r 字符并在解析提交值时删除它们来处理 CellFormatting 事件?问题在于单元格似乎有自己的方式在输入模式下重新格式化文本,在两种模式之间切换时改变其外观。可能还有其他尚未发现的副作用......
  • 或者有没有办法修改我忽略的 WrapMode 行为?

最佳答案

您总是可以在连续字符串中插入空格,我不知道在您使用 gridview 时有任何其他选项,那里的格式有点受限。

如果你真的需要在固定宽度的单元格中显示它,你可以尝试这样的事情:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string cellTxt = e.Row.Cells[1].Text;
int lengthBeforeBreak = 25;
if (e.Row.RowType == DataControlRowType.DataRow && cellTxt.Length > lengthBeforeBreak)
{
int curPos = 0;
for (int i = 0; i < Decimal.Round((cellTxt.Length/lengthBeforeBreak),0); i++)
{
if (cellTxt.IndexOf(" ", curPos, lengthBeforeBreak) == -1)
{
cellTxt = cellTxt.Insert(curPos+lengthBeforeBreak, " ");
}
curPos += lengthBeforeBreak + 1;
}
e.Row.Cells[1].Text = cellTxt;
}

}

关于c# - DataGridView 中的自定义 WrapMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com