如何在任何字符点放置文本
本文关键字:置文本 字符 任何 | 更新日期: 2023-09-27 18:01:33
我有一个文本框,我想把"列"的数据。我想我可以通过文本框设置displayBox.SelectionStart
和displayBox.SelectionLength
来移动插入符号,然后继续填充数据。
这是我的显示代码:
foreach (String line in LoanSort.MyArray)
{ // bringing in lines from my array
String[] values = line.Split(new char[] { ' ', '/'});
//splitting my lines.
if (values.GetValue(2).ToString() == "2011")
{// finding out if the "loan" occured in 2011 and if it did, display...
displayBox.SelectionStart = 0; displayBox.SelectionLength = 0;
displayBox.Text += values.GetValue(0).ToString() + "/" +
values.GetValue(1).ToString() + "/" +
values.GetValue(2).ToString();
displayBox.SelectionStart = 25; displayBox.SelectionLength = 0;
displayBox.Text += values.GetValue(3).ToString();
displayBox.SelectionStart = 65; displayBox.SelectionLength = 0;
displayBox.Text += values.GetValue(4).ToString();
displayBox.Text += " " + Environment.NewLine;
}
}
日期值为接触值。GetValue 0 - 3。在打印出日期之后,我想将光标移动到25个字符的位置,并输出借款人的姓和名。但是我的显示现在在日期和名称之间显示了一个空格。
有什么建议吗?
虽然我同意meklarian的观点,这是实现目标的一种糟糕的方式,但要回答这个问题,你可以这样做。
例如:
displayBox.SelectionStart = 65;
displayBox.SelectionLength = 0;
displayBox.Text += values.GetValue(4).ToString();
首先,可以用values[4]
代替values.GetValue(4).ToString()
。这将返回位置4的字符串,因此您甚至不需要将其转换为字符串。
您可以使用
来更新游标:displayBox.SelectionStart = 65;
displayBox.SelectionLength = 0;
displayBox.SelectedText = values[4];
或者直接更新文本,完全忽略光标:
displayBox.Text = displayBox.Text.Insert(65, values[4]);
一个更好的方法是使用字符串格式。这段代码做了几件事。第一个string.Format
格式化values
的元素0,1和2,然后将它们填充为25个字符的宽度。第二个string.Format
格式化values
的元素3和4。术语,-40
指示格式为40个字符宽,左对齐。我们不能在第一个string.Format
上使用它,因为我们填充了几个元素的结果,而不仅仅是一个元素。
displayBox.Text +=
string.Format("{0}/{1}/{2}", values).PadRight(25) +
string.Format("{3,-40}{4} ", values) +
Environment.NewLine;