Строка в формате StringReader - PullRequest
0 голосов
/ 11 мая 2011

Я следовал этому учебнику Wordpress , который прекрасно работает. Я использовал просмотр списка, и когда я пытаюсь отформатировать строку, он не распознает \t (но распознает \n). Он также не распознает String.Format и т. Д.

В любом случае можно ли отформатировать строку, используя вкладки или что-то подобное?

Приветствия

EDIT

for( i = 0; i < lstView.Items.Count;i++) 
{ 
    name = lstView.Items[i].Text; 
    state = lstView.Items[i].SubItems[1].Text; 
    country = lstView.Items[i].SubItems[2].Text; 
    line += name + "\t" + state + "\t" + country + "\n"; 
}  
StringReader reader = new StringReader(line); 

Когда для печати используется строка, она объединяется, поэтому \ t не работает. \ N для новой строки работает, хотя. Кто-нибудь знает, как я могу отформатировать строку без пробелов.

Результат такой

NameStateCountry

LongernameStateCountry

anotherNameAnotherStateAnotherCountry

Где бы я хотел, чтобы они были выстроены (как в таблице) с именем одного столбца, укажите другой столбец и страну, затем третий

Любые предложения с благодарностью

1 Ответ

1 голос
/ 16 мая 2011

Что ж, немного странно, что вкладки теряются, но, с другой стороны, вкладки, вероятно, будут проблематичными, если длина отдельных элементов строки (имя, состояние и т. Д.).
Вместо этого вы можете использовать string.Format() и использовать фиксированную ширину столбца.
Чтобы получить хороший визуальный вывод, это должно включать шаг разбора для определения правильной ширины столбца.
Когда это будет сделано, используйте что-то подобное, чтобы использовать пробелы вместо вкладок.

string line = string.Format("{0,-20}{1,-20}{2,-20}", "name", "state", "country");

РЕДАКТИРОВАТЬ : увидел, что вы не хотите использовать пробелы.
В этом случае вам, вероятно, придется обрабатывать это в самом алгоритме печати. Вы по-прежнему можете разделять элементы вкладками, а затем разделять их по каждой строке, создавая массив элементов (столбцов) для каждой строки.
Для каждого элемента распечатайте его, используя Graphics.DrawString() с подходящим смещением X-позиции.

См. Документацию для Graphics.DrawString .

...