1

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

有什么建议么?

4

1 回答 1

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格式化元素 0、1 和 2 values,然后将它们填充到 25 个字符的宽度。第二个string.Format格式的元素 3 和 4 values。该术语,-40指示格式为 40 个字符宽,左对齐。我们不能在第一次使用它,string.Format因为我们填充了几个元素的结果,而不仅仅是一个元素。

displayBox.Text +=
    string.Format("{0}/{1}/{2}", values).PadRight(25) +
    string.Format("{3,-40}{4} ", values) +
    Environment.NewLine;
于 2013-02-28T07:10:11.823 回答