C# 更改C中多行文本框的特定行#
我无法更改多行文本框的特定字符串 假设多行文本框的第一行是C# 更改C中多行文本框的特定行#,c#,winforms,textbox,C#,Winforms,Textbox,我无法更改多行文本框的特定字符串 假设多行文本框的第一行是“Hello”,第二行是“Bye” textBox1.Lines[1]=“再见” 当我看到使用调试模式的结果时,它不是“再见” 我也读了这篇文章&这个问题,但没有得到想要的答案。你可以试着像这样替换第二行的文本: var lines = textBox.Text.Split(new[] { '\r', '\n' }).Where(x => x.Length > 0); textBox.Text = textBo
“Hello”
,第二行是“Bye”
textBox1.Lines[1]=“再见”代码>
当我看到使用调试模式的结果时,它不是“再见”
我也读了这篇文章&这个问题,但没有得到想要的答案。你可以试着像这样替换第二行的文本:
var lines = textBox.Text.Split(new[] { '\r', '\n' }).Where(x => x.Length > 0);
textBox.Text = textBox.Text.Replace(lines.ElementAt(1), "Good bye");
var lines = TextBox1.Lines;
lines[1] = "GoodBye";
TextBox1.Lines = lines;
首先,您需要在变量中指定textBox1.Lines
数组
string[] lines = textBox1.Lines;
更改数组值
lines[1] = "Good bye";
将数组重新指定给文本框
textBox1.Lines=lines;
据
默认情况下,行集合是行的只读副本
在文本框中。要获取可写的行集合,需要分配
新字符串数组
正如MSDN所述(您提供的链接):
默认情况下,行集合是文本框中行的只读副本。
要获取可写的行集合,请使用代码
与以下内容类似:textBox1.Lines=新字符串[]{“abcd”}
因此,您必须“获取”行
集合,更改它,然后返回到文本框
。可以这样实现:
var lines = textBox.Text.Split(new[] { '\r', '\n' }).Where(x => x.Length > 0);
textBox.Text = textBox.Text.Replace(lines.ElementAt(1), "Good bye");
var lines = TextBox1.Lines;
lines[1] = "GoodBye";
TextBox1.Lines = lines;
或者,您可以替换文本,例如通过行属性使用文本框行行无效。通过Text
属性处理行稍微好一点,但也无效
下面是代码段,它允许您替换文本框
中的一行,而无需重写整个内容:
public static bool ReplaceLine(TextBox box, int lineNumber, string text)
{
int first = box.GetFirstCharIndexFromLine(lineNumber);
if (first < 0)
return false;
int last = box.GetFirstCharIndexFromLine(lineNumber + 1);
box.Select(first,
last < 0 ? int.MaxValue : last - first - Environment.NewLine.Length);
box.SelectedText = text;
return true;
}
public static bool ReplaceLine(文本框、整数行号、字符串文本)
{
int first=box.GetFirstCharIndexFromLine(行号);
如果(第一次<0)
返回false;
int last=box.GetFirstCharIndexFromLine(行号+1);
框。选择(首先,
last<0?int.MaxValue:last-first-Environment.NewLine.Length);
box.SelectedText=文本;
返回true;
}
以这种方式使用行是一个非常糟糕的主意。因此,如果使用行
无效,并且使用文本
,您如何使用文本框
?有可能吗?当表单上有两个文本框时,您是否需要一些额外的内存?两个文本框都包含1KB的字符是什么?有可能吗?找个朋友。是的,有可能。调查我的答案,寻找证据。至于通过行
或文本
工作,非常高的内存消耗(通过行
工作时至少是三倍)并不是唯一的缺点。还有其他人。看来你没听明白这个笑话。我不认为你的方法有必要使代码复杂化,比如说,10行代码<代码>行
遍历没有任何重大性能问题的字符数组。我希望看到三倍时间的例子,特别是现实生活中的达拉,而不是两个角色。而且,毕竟,如果texbox文本是应用程序中的瓶颈,人们应该放弃编程,我明白了,但仍然确信使用正确的方法更好,好吧,几乎总是这样。当你通过行更新文本框时,你不需要2gb的字符来感受痛苦,20-30kb的大量行就足够了,重置滚动位置和闪烁只需要很少的名字。好吧,我同意正确的方法,但另一方面,在文本框中放置超过10行是错误的方法。Textbox并不意味着包含电子书,所以通过索引访问它的行似乎过于工程化了。