изменение моего дизайна формы Windows удаляет некоторый не связанный код - PullRequest
0 голосов
/ 07 ноября 2018

У меня странная проблема, которая может быть вызвана моим невежеством.

У меня есть treeview с .AfterSelect, и каждый раз, когда я меняю дизайн моей формы (в представлении deign), код по какой-то причине удаляется.

вот мой код

this.lstTreeView.AfterSelect += LstTreeView_AfterSelect; < this is the code that gets removed
this.lstTreeView.Location = new System.Drawing.Point(194, 56);
this.lstTreeView.Name = "lstTreeView";
this.lstTreeView.Size = new System.Drawing.Size(220, 498);
this.lstTreeView.TabIndex = 6;

это код, который позволяет работать.

private void LstTreeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
        TreeNode CurrentNode = e.Node;
        string fullpath = CurrentNode.FullPath;
        MessageBox.Show(fullpath);
        NrDirSearch(fullpath);

    }

если кто-нибудь может дать мне несколько советов о том, почему удаляется .AfterSelect, это было бы очень полезно.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Я предлагаю вам:

  • в конструкторе форм Windows, щелкните древовидное представление, чтобы выбрать его
  • в сетке свойств щелкните значок молнии и прокрутите, чтобы найти событие AfterSelect
  • щелкните правой кнопкой мыши имя AfterSelect и выберите сброс
  • хит сохранить все
  • Полностью закрыться / закрыть визуальную студию
  • перезапустить / перезагрузить решение Вернитесь к событию AfterSelect, как указано выше, поле для которого должно быть пустым
  • щелкните раскрывающийся список и выберите существующий обработчик событий
  • сохранить все, выйти и перезапустить против и проверить, что настройки остались

Если вы обнаружите, что он не прилипает, убедитесь, что у вас нет дизайнера, открытого в другой программе, например Текстовый редактор, который автоматически сохраняет старую версию файла, в которой отсутствует обработчик событий?

Кстати, описанный выше процесс заключается в том, как добавить событие в представление «Дизайн» - щелкните соответствующий элемент управления, значок молнии, выделите требуемое событие, дважды щелкните имя события, и вы перенесетесь в свой собственный код с новым именованный обработчик событий создан и готов к заполнению

Если вы не напишите в нем никакого кода, вернетесь к конструктору и сбросите событие в соответствии с инструкциями маркированного списка, тогда ваш метод обработчика событий в вашем коде исчезнет. Если вы пишете код в обработчик событий, он не удаляется при выполнении сброса, во время сброса удаляются только пустые методы обработчика

Примечание: будьте осторожны с Undo, если вы видите сообщение о том, что «выполнение этой отмены приведет к потере работы в другом месте», это обычно означает, что дизайн формы Windows или код designer.cs будут изменены в результате действий отмена

Файлы конструктора безопасны для редактирования вручную, и иногда это необходимо, если содержимое попало в состояние, при котором происходит сбой конструктора. Я чаще всего сталкиваюсь с этим при удалении обработчиков событий из моего кода, на которые все еще есть ссылки в конструкторе. Появится экран с сообщением о том, что проблема не позволяет появиться конструктору форм, с указанием строки ошибки в файле конструктора. Кроме того, в прошлом я редактировал конструктор напрямую, чтобы установить большое количество свойств без необходимости использовать конструктор - будьте осторожны, чтобы не открывать конструктор форм Windows одновременно с редактированием файла designer.ca, потому что конструктор форм будет вероятно, перезаписать ваши изменения. До тех пор, пока вы помните, что открытие одного и того же файла в любых двух разных редакторах одновременно может привести к конфликту и потере работы, и примите меры для обеспечения того, чтобы изменения в одном редакторе отражались в другом, прежде чем продолжить дальнейшие изменения в с другим редактором у вас все будет в порядке:)

Редактировать: сказав этот абзац выше, Микки Ди заставил меня осознать важный момент, который я упустил:

Файл designer.cs читается конструктором форм и используется для создания содержимого формы, кнопок, свойств и т. Д. Таким образом, если вы собираетесь редактировать designer.cs в текстовом редакторе, вам следует ограничить свои правки. только те вещи, которые дизайнер форм может использовать, понимать, представлять и сохранять при следующей записи файла. Добавление строки для установки кнопки в активном порядке. Удаление строки, которая вызывает ее сбой, также хорошо. Помещение 27 методов, реализующих стратегию доступа к базе данных всей вашей программы, не является хорошей идеей, поскольку к ней не будут обращать внимание или использовать их для построения формы, когда дизайнер читает файл, и, следовательно, теряются, когда дизайнер пишет файл. Если вы не уверены в разнице между тем, что будет и не будет сохранено, используйте удаление или исправление только существующих строк вместо добавления новых строк кода

0 голосов
/ 07 ноября 2018

Вы никогда не должны [1] изменять *. Designer.cs файлы. Они генерируются кодом. Любые внесенные вами изменения могут быть перезаписаны.

Вместо этого либо используйте WinForms GUI Forms Designer для визуальной настройки обработчиков событий, либо вы можете сделать это в коде в файле кода .cs.

В сети имеется множество ресурсов по использованию дизайнера WinForms.


[1] см. Комментарий Кая Джарда ниже для исключения из правила, с которым я согласен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...