如何在任何字符点放置文本

本文关键字:置文本 字符 任何 | 更新日期: 2023-09-27 18:01:33

我有一个文本框,我想把"列"的数据。我想我可以通过文本框设置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个字符的位置,并输出借款人的姓和名。但是我的显示现在在日期和名称之间显示了一个空格。

有什么建议吗?

如何在任何字符点放置文本

虽然我同意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;