Разрешение экрана C # и отображение формы - PullRequest
3 голосов
/ 28 июня 2011

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

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

РЕДАКТИРОВАТЬ: Кроме того, он появляется в разных стилях под разными Операционными системами, есть ли стандартизация его дизайна?

Ответы [ 3 ]

5 голосов
/ 28 июня 2011

Похоже, вы указали свои элементы управления с абсолютным позиционированием и другими настройками по умолчанию.Чтобы сделать приложение WinForms, которое выглядит и чувствует себя одинаково и ведет себя правильно в различных сценариях изменения размера, вам необходимо использовать свойства Anchor и Dock .Организация элементов управления в WinForms может быть утомительным процессом, но MSDN включает в себя несколько хороших How To по теме .

. Я бы также предложил следовать этой статье TechRepublic, которая охватываетРазница между привязкой и стыковкой и визуально показывает, что выполняет каждое свойство:

Anchoring example from the TechRepublic Article

4 голосов
/ 28 июня 2011

Вы можете использовать Control.ScaleControl и Control.Scale

private void MainForm_Load( object sender, EventArgs e )
{
    float width_ratio = (Screen.PrimaryScreen.Bounds.Width / 1280);
    float heigh_ratio = (Screen.PrimaryScreen.Bounds.Height / 800f);

    SizeF scale = new SizeF(width_ratio, heigh_ratio);

    this.Scale(scale);

   //And for font size
   foreach (Control control in this.Controls)
   {
      control.Font = new Font("Microsoft Sans Serif", c.Font.SizeInPoints * heigh_ratio * width_ratio);
   }
}

В случае, если разрешение платформы разработки составляет 1280x800

Согласно ответу @sixlettervariables Разумеется, стыковка и закрепление помогут.

0 голосов
/ 26 февраля 2015

Попробуйте это

private void MainForm_Load( object sender, EventArgs e ) 
  { 
     this.Size = Screen.PrimaryScreen.WorkingArea.Size 
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...