Возникли проблемы с выравниванием текста в C#

#c# #listbox #windows-forms-designer #text-alignment

#c# #listbox #windows-forms-designer #выравнивание текста

Вопрос:

Итак, я пытаюсь отформатировать вывод списка. По сути, я хочу, чтобы название элемента было выровнено по левому краю, а стоимость элемента выровнена по правому краю. Вот мой метод toString(), который я использую:

  public override string ToString() {
     return String.Format("{0, -20}{1, 10:C2}", name, cost);
 }
  

Тогда вот изображение того, что делает результирующий результат:

вывод списка

Я упускаю что-то простое здесь? Из всего, что я прочитал, это должно правильно отформатировать мой вывод. Я прочитал кое-что об использовании ListView вместо этого, однако для назначения я должен использовать ListBox. Любая помощь будет оценена!

Комментарии:

1. Вам нужно использовать шрифт фиксированной ширины или найти сторонний элемент управления, который поддерживает выравнивание по правому краю.

2. Измените шрифт списка. Используйте шрифт с фиксированной шириной (он же моноширинный шрифт)

3. Кажется, вам следует использовать моноширинный (фиксированный шаг, фиксированная ширина, непропорциональный) шрифт, например Courier , Courier New , Lucida Console , Monaco

4. Да, это было так! даже не думал о том, что шрифт является проблемой.

Ответ №1:

Вам просто нужно установить шрифт элемента управления на что-то с фиксированной шириной.

 listBox1.Font = new Font(FontFamily.GenericMonospace, 10);

listBox1.Font = new Font("courier", 10);
  

Комментарии:

1. Вау, большое спасибо! Я подумал, что это что-то простое, но, похоже, я нигде не мог найти эту информацию.