Анализ Designer.cs файла проекта - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Мне нужно распарсить Designer файл, собственно, большинство уже сделано, осталось только пройтись по той его части, где поочередно описываются свойства элементов управления. Синтаксис таков:
Листинг программы
  1. //
  2. // panel24
  3. //
  4. this.panel24.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(204)))), ((int)(((byte)(204)))));
  5. this.panel24.Dock = System.Windows.Forms.DockStyle.Left;
  6. this.panel24.Location = new System.Drawing.Point(0, 2);
  7. this.panel24.Name = "panel24";
  8. this.panel24.Size = new System.Drawing.Size(2, 45);
  9. this.panel24.TabIndex = 11;
  10. //
  11. // panel25
  12. //
  13. и тд...
Пользователь выбирает необходимый элемент и в RichTextBox выводятся его свойства. Стало быть мне нужно, во-первых: Каким-то образом записать условие, что если найдена строка "//" + Name и она находится между строками, которые содержат только "//", то делать то-то то-то:
Листинг программы
  1. //
  2. // panel24
  3. //
Во-вторых, как-то вывести весь текст между "//":
Листинг программы
  1. //
  2. this.panel24.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(204)))), ((int)(((byte)(204)))));
  3. this.panel24.Dock = System.Windows.Forms.DockStyle.Left;
  4. this.panel24.Location = new System.Drawing.Point(0, 2);
  5. this.panel24.Name = "panel24";
  6. this.panel24.Size = new System.Drawing.Size(2, 45);
  7. this.panel24.TabIndex = 11;
  8. //
Возможно, Regex поможет? Результат, которого я хочу добиться наглядно:

Решение задачи: «Анализ Designer.cs файла проекта»

textual
Листинг программы
  1. int number = 0;
  2.                     int enumer = 0;
  3.                     for (var i = 0; i < massive.Count(); i++)
  4.                     {
  5.                         if (massive[i].Contains("// " + Name))
  6.                         {
  7.                             if (massive[i - 1].Contains("//") & massive[i + 1].Contains("//"))
  8.                             {
  9.                                 number = i + 1;
  10.                                 RichTextBox rb = new RichTextBox();
  11.                                 for (var j = number; j < (massive.Count() - number); j++)
  12.                                 {
  13.                                     if (!massive[j].Contains("//"))
  14.                                     {
  15.                                         rb.AppendText(massive[j]);
  16.                                         PropertiesList.Add(massive[j]);
  17.                                     }
  18.                                     else
  19.                                     {
  20.                                         //если дошли до строки с двойным слешем
  21.                                         //то надо как-то из цикла выйти
  22.                                     }
  23.                                 }
  24.                                
  25.                               //  foreach (Match match in Regex.Matches(input, @"//([\s\S]*?)//"))
  26.                                  //   PropertiesList.Add("index " + match.Groups[1].Index);
  27.                             }
  28.                         }
  29.                     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы