Windows Forms Designer уничтожает макет формы - PullRequest
3 голосов
/ 13 октября 2009

Этим утром я наткнулся на странную проблему в конструкторе Windows Forms в Visual Studio. У меня есть форма, которая работает около месяца без изменений. В приложении это выглядит так:

Screenshot of how the form should look like

(текст стал нечитаемым, потому что я не совсем уверен в юридических последствиях здесь).

Теперь, начиная с сегодняшнего дня, по-видимому (кажется, я вчера без проблем открыл форму в конструкторе), в конструкторе это выглядит так:

Screenshot of how the form looks in the Windows Forms Designer

При просмотре различий каждый элемент управления (или почти каждый - надписи не были затронуты, но это может быть связано с автоматическим изменением размера) получил ширину 311 пикселей. Строки, подобные приведенным ниже, часто встречаются во всем файле после того, как с ним связался дизайнер:

this.panel1.Size = new System.Drawing.Size(311, 24);

Откуда откуда взято значение . Кроме того, одна метка получила интересный текст "潐瑲⼠倠獯瑩潩㩮攀瑵慲ⱬ" (в его необработанных байтах больше нет смысла).

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

На компьютере сотрудника этого не происходит вообще (хотя он не может открывать наборы данных без сбоя VS, поэтому, возможно, обе установки немного странные ...).

Я серьезно задаюсь вопросом, что здесь происходит. Есть идеи?

ETA: Я не могу изменить размер элементов управления в конструкторе, как только он перешел в режим изменения размера. Изменение размера вызывает некоторые визуальные артефакты, как если бы размер элемента управления был , но при проверке он все еще имеет ширину 311 пикселей.

ETA 2: Достаточно странно: открытие конструктора (пока все хорошо), затем переход к отложенным изменениям в AnkhSVN и отмена всех изменений в файлах также устраняет повреждение. Форма выглядит так, как должна даже в дизайнере. Пока я не закрою и не открою снова.

Ответы [ 5 ]

4 голосов
/ 19 октября 2009

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

Удалил RockScroll, и это решило проблему. В любом случае, спасибо за весь вклад.

1 голос
/ 13 октября 2009

Вы пытались очистить свой проект? (Боюсь, это ничего не решит, но это простой шаг, который стоит попробовать)


Кроме того, не могли бы вы очистить кеш Visual Studio? В подобных ситуациях у меня много раз получалось.

Вот несколько ссылок, касающихся VS Cache Hell: 1 2 . Пожалуйста, не стесняйтесь редактировать мой пост, если вы найдете другую полезную информацию по этому вопросу.

0 голосов
/ 13 октября 2009

Возможно, вы недавно установили другой языковой пакет (возможно, корейский).

0 голосов
/ 13 октября 2009

Вы делаете какое-то ручное размещение или привязку в конструкторе формы или методах OnPaint? Однажды у меня была похожая проблема, потому что я пытался изменить позиции некоторых элементов вручную, и дизайнер передавал недопустимый ClientRectangle (или что-то) во время рендеринга.

0 голосов
/ 13 октября 2009

Это можно сделать одним щелчком мыши в конструкторе с помощью инструмента «сделать одинаковую ширину».

По моему опыту, если Visual зависает во время сборки, довольно часто щелкают в произвольном месте на экране, чтобы проверить, выполняется ли VS с текущей задачей)

Просто идея, хотя.

...