Преобразование старых проектов Windows Forms VS 2002 в новые версии - PullRequest
2 голосов
/ 06 августа 2010

У меня есть приложение, которое было запущено в C # 1.0 с использованием Visual Studio .NET. В рамках частичной перезаписи / обновления я хотел бы, чтобы приложение использовало преимущества функций автоматического масштабирования форм в Windows Forms 2.0. Эти функции основаны на установке свойства AutoScaleDimensions, которое должно быть выполнено дизайнером. Новые пользовательские формы, которые я добавляю в проект, настроены с правильным кодом конструктора, но все мои существующие формы и элементы управления не генерируют это свойство автоматически и, следовательно, не корректно автоматически масштабируются. Я считаю, что это потому, что старые формы были созданы со старым форматом проекта VS2002, где весь сгенерированный дизайнером код выгружается в тот же файл, что и код, созданный пользователем; современные приложения WinForms, разумеется, разбиваются на несколько файлов по VS.

Мой вопрос: есть ли какой-нибудь известный способ «обновить» старый проект Windows Forms до современных форматов Visual Studio? (Файлы проекта были обновлены до форматов VS2010, но сами формы все еще используют формат монофайла.) Я хотел бы, чтобы VS генерировал свойство AutoScaleDimensions по умолчанию и не требовал инициализации свойства вручную ,

Ответы [ 2 ]

1 голос
/ 07 августа 2010

Вы не получите помощь в преобразовании класса формы в частичный класс. В этом действительно нет необходимости, дизайнер по-прежнему поддерживает старый стиль. Если редактирование макета формы автоматически не вставляет назначение свойства, просто вставьте его в себя, непосредственно перед назначением ClientSize. Сначала попробуйте на примере проекта, просто нажмите кнопку на форме и посмотрите на содержимое файла Designer.cs. Это должно напоминать:

        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(...)
        // etc..

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

    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, 125f / 96 * this.Font.SizeInPoints);
        base.OnLoad(e);
    }

Может потребоваться изменить свойства макета, чтобы он выглядел хорошо.

0 голосов
/ 21 декабря 2011

Вы можете сделать это, но вы должны сделать это вручную:

  • Скопировать весь файл .cs в .designer.cs
  • Добавить частичное ключевое слово в .designerone
  • В .designer one удалите все, кроме кода, сгенерированного Windows Designer
  • Сделайте обратное в .cs (удалите код, сгенерированный Windows Designer)
  • Добавьте.designer.cs к проекту

Довольно простой, но очень трудоемкий процесс для более чем нескольких форм.

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