2013-02-28 4 views
1

У меня есть текстовое поле, в котором я хочу разместить «столбцы» данных. Я думал, что смогу установить текстовые поля 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; 
    }  
} 

Значение даты контакт values.GetValue 0-3. После того, как я распечатаю дату, я хочу затем переместить курсор на пятно 25 символов и вывести имя заемщика, имя. Но мой дисплей теперь показывает пробел в символах между датой и именем.

Любые предложения?

+0

Есть ли какое-либо конкретное преимущество, которое предусматривает использование «TextBox»? Вероятно, вам лучше будет обслуживать «DataGridView» или, по крайней мере, «ListBox» с вкладками. См. Http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx и http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox. .aspx – meklarian

ответ

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; 
+0

Я использовал string.Format также в построителе строк. он, похоже, хорошо работал. Я надеюсь, что это единственный проект, который мне нравится, который требует пользователя текстового окна. :) спасибо, парни за ваш вклад. –

Смежные вопросы