Как лучше всего запрограммировать программу 'colorer'? - PullRequest
0 голосов
/ 22 марта 2011

Извините за странный заголовок, я не мог придумать ничего лучшего!

В любом случае, я на полпути к написанию программы ( Приложение Windows Forms ), которая читает вфайл с фиксированной шириной, собирает длины полей из пользовательского ввода, затем он должен отображать каждый столбец из первой строки файла другим цветом ... Вы знаете, что я имею в виду?По сути, это различие между различными полями в файле фиксированной ширины с использованием цвета.

Я хотел спросить, как лучше всего это сделать?Потому что у меня много проблем, и я все время сталкиваюсь с вещами и просто внедряю отвратительные решения, когда знаю, что есть гораздо лучшие решения.

Очевидно, вам не нужно давать мне целую программу,просто некоторые идеи о лучших путях решения этой проблемы - потому что мое решение просто ужасно.

Спасибо всем заранее!

1 Ответ

1 голос
/ 22 марта 2011

Я бы использовал RichTextBox . Это простой способ изменить цвет текста. Вот пример, где у меня есть 3 ввода от пользователя, которые говорят, насколько широким должен быть каждый столбец. Затем он читает в файле и соответствующим образом окрашивает ширину. Надеюсь, это даст вам больше идей.

public partial class Form1 : Form
{
  public Form1()
  {
     InitializeComponent();
     ReadFile();
  }

  private void ReadFile()
  {
     // Assumes there are 3 columns (and 3 input values from the user)
     string[] lines_in_file = File.ReadAllLines(@"C:\Temp\FixedWidth.txt");
     foreach (string line in lines_in_file)
     {
        int offset = 0;
        int column_width = (int)ColumnWidth1NumericUpDown.Value;
        // Set the color for the first column
        richTextBox1.SelectionColor = Color.Khaki;
        richTextBox1.AppendText(line.Substring(offset, column_width));
        offset += column_width;

        column_width = (int)ColumnWidth2NumericUpDown.Value;
        // Set the color for the second column
        richTextBox1.SelectionColor = Color.HotPink;
        richTextBox1.AppendText(line.Substring(offset, column_width));
        offset += column_width;

        column_width = (int)ColumnWidth3NumericUpDown.Value;
        // Make sure we dont try to substring incorrectly
        column_width = (line.Length - offset < column_width) ?
            line.Length - offset : column_width; 
        // Set the color for the third column
        richTextBox1.SelectionColor = Color.MediumSeaGreen;
        richTextBox1.AppendText(line.Substring(offset, column_width));

        // Add newline
        richTextBox1.AppendText(Environment.NewLine);
     }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...