2015-07-10 1 views
1

Я использую в полноэкранном режиме, установивC# - После максимизации моей формы, значения ширины и высоты возвращаются неправильно

this.WindowState = FormWindowState.Maximized; 

После выполнения этого, я хочу, чтобы получить новую ширину и высоту формы, но когда я использую this.width this.height, он просто возвращает значения, которые были установлены до максимизации.

Вот мой код:

this.WindowState = FormWindowState.Maximized; 
g.DrawImage(app.Properties.Resources.bg, 0, 0, Screen.GetWorkingArea(this).Width, Screen.GetWorkingArea(this).Height); 
+0

возможно вам нужно [ActualWidth] (https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.actualwidth (V = vs.110) .aspx) и [ActualHeight] (https: //msdn.microsof t.com/en-us/library/system.windows.frameworkelement.actualheight(v=vs.110).aspx) – Grundy

+0

Я не вижу, где вы используете this.Width и this.Height. Где вы называете этот код? У вашей формы есть граница? Почтовый код, который дублирует проблему. – LarsTech

+0

Этот код является отредактированным после ответа Graffitos. Прежде чем я попробовал это нормально с этим. Ширина – Joey

ответ

0

Когда форма максимизируется, получить его ширину и высоту от Screen.WorkingArea размера.

Не используйте:

Screen.GetWorkingArea(this) 

но:

Screen.WorkingArea 
+0

Это все еще не работает, такая же проблема – Joey

+0

Приложение WinForms? – Graffito

+0

Да, это WinForms – Joey

0

Я не могу воссоздать проблему. Я просто сделал быструю программу с Form (первоначально 300x300), Button и текстовым полем. Он работает так, как ожидалось.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.WindowState = FormWindowState.Maximized; 
     textBox1.Text = this.Width + " " + this.Height; 
    } 
} 

Мои textBox (textBox1) определенно не отображает «300 300»

Edit: на основе обновленной ответ и ваши комментарии ниже, попробуйте это и посмотреть, если он работает, как ожидалось (возможно также см, если вручную ввода ширины и высоты работ):

this.WindowState = FormWindowState.Maximized; 
int width = Screen.GetWorkingArea(this).Width; 
int height = Screen.GetWorkingArea(this).Height; 
g.DrawImage(app.Properties.Resources.bg, 0, 0, width, height); 
+0

Теперь это странно .. – Joey

+0

Вы абсолютно уверены, что не получаете высоту и ширину до максимизации? Или заранее их хранить и забыть переустановить их? –

+0

Да, я на 100% уверен, это абсолютно невозможно – Joey