2014-01-22 4 views
1

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

как я могу установить абсолютные 1280X800 для своих форм и убедиться, что размер формы не будет изменен ни одним разрешением!

+0

Вы можете установить минимальный размер, но если экрана недостаточно, то окно будет выходить за пределы видимого экрана. Я бы посоветовал использовать свойство «Anchor» для элементов управления и использовать панели прокрутки там, где это необходимо ... просто подождите, пока один из ваших пользователей решит, что они хотят изменить настройку DPI, что будет еще веселее! – musefan

ответ

2

Вы можете использовать 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); 
    } 
} 

Надеется, что это помогает.

+0

Вот почему я люблю и пропускаю WPF/WinForms :(Это потрясающе оооооооооооооооооооооооооооооооооооо! – Subby

2

Используйте свойство MaximumSize формы.

form.MaximumSize = new Size(1280, 800);

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

1

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

Layout Managers

Docking

Anchors

1

Свойство

Screen.PrimaryScreen.WorkingArea 

очень полезен для калибровки и позиционирования формы. Например, этот код:

this.Width = Screen.PrimaryScreen.WorkingArea.Width/2; 
this.Height = Screen.PrimaryScreen.WorkingArea.Height/2; 
this.Top = (Screen.PrimaryScreen.WorkingArea.Top + Screen.PrimaryScreen.WorkingArea.Height)/4; 
this.Left = (Screen.PrimaryScreen.WorkingArea.Left + Screen.PrimaryScreen.WorkingArea.Width)/4; 

разместит форму, в которой она выполняется в середине экрана и размер ее до половины экрана.

WorkArea var используется для исключения таких вещей, как панель задач и другие закрепленные элементы на рабочем столе при расчете размера экрана.

Надеюсь, это поможет.

Смежные вопросы