如何在任何角色点放置文本

时间:2013-02-28 00:12:59

标签: c# textbox format multiple-columns

我有一个文本框,我想放置数据的“列”。我想我可以在文本框设置displayBox.SelectionStartdisplayBox.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个字符的位置并输出借方的姓氏,名字。但我的显示屏现在显示日期和名称之间的字符空格。

有什么建议吗?

1 个答案:

答案 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;