Як відновити у вікні конструктора випадково видалений контрол в winforms

З Windows Forms потрібно бути готовим до різного роду фокусів з боку Visual Studio.
Навіть при використанні систем контролю версій, часом доводиться повозитися з підлість у вигляді зниклих картинок або дочірніх елементів в якомусь меню або ToolStrip. Багато подібні випадки можна поправити руками, шляхом ручного виправлення файлів Designer. але не завжди. Чим складніше форма, тим вище ризик того, що дизайнер студії що-небудь зламає; завжди потрібно бути до цього готовим.

1. Раз з'явився таке питання, то мабуть Ctrl + Z точно вже не допоможе. Це перше, що потрібно було зробити.

2. Якщо форма не була збереження, то для відкату змін можна було б її просто закрити без збереження. Але знову ж таки, це потрібно було робити відразу, при виникненні проблеми і якщо звичайний відкат назад (Ctrl + Z) не допоміг.

3. Якщо не використовується система контролю версій, то потрібно регулярно робити резервні копії вихідного коду. Використання систем контролю версій буде зручніше. Але навіть при використанні систем контролю версій, слід регулярно робити резервні копії, і резервні копії резервних копій.

4. Якщо є збірка потрібного стану програми (або приблизно цього стану) і над зниклим інтерфейсом велася робота в поті чола, без перерв на обід і сон, і все дуже складно і не хочеться повторювати цей героїчний вчинок, то можна декомпілірвать попередню збірку і висмикнути код опису інтерфейсу з неї. Наприклад, за допомогою dotPeek.

Якщо елемент знищено повністю і використовувати відновлення з попередньої збірки, то в декомпільовану коді потрібно буде знайти клас форми, а в ньому метод InitializeComponent. У DataGridView. кожна колонка і рядок (при наявності) будуть окремими елементами, потрібно знайти і перенести весь код опису цих елементів. Як правило, для кожного окремого елемента, установка значень властивостям в коді йде послідовно. Дочірні елементи можуть йти в розкид, по іменах елементів можна більш чи менш зрозуміти, що до чого (якщо стандартні імена у елементів змінювалися на власні, то проблем з пошуком виникнути не повинно).