我有一个文本框,我想放置数据的“列”。我想我可以在文本框设置displayBox.SelectionStart
和displayBox.SelectionLength
移动插入符然后继续填充数据。< / p>
以下是该框的显示代码:
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;
}
}
日期值是联系人值。获取值0-3。打印出日期后,我想将光标移动到25个字符的位置并输出借方的姓氏,名字。但我的显示屏现在显示日期和名称之间的字符空格。
有什么建议吗?
答案 0 :(得分:0)
虽然我同意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;