2012-01-29 57 views
2

我不知道是否有辦法,而不是使用像素,在C#中調整窗體的大小?例如,讓Form1填充屏幕的75%寬度和80%的屏幕高度?我已經嘗試了一下閱讀用戶屏幕分辨率,然後從那裏調整它,但我正在尋找不同的方法。我想這樣做來解決不同屏幕分辨率的問題,所以我不必使用滾動條。有沒有辦法做到這一點,或者我應該只保留我的卷軸?有沒有辦法讓表單填充x%的屏幕?

+1

這是WPF? Windows窗體? ASP.NET?你需要指定你正在談論的技術。 C#只是語言。 – 2012-01-29 10:00:18

+0

如果用戶的屏幕不夠大或者顯示的數據太多,您仍然必須將滾動條作爲後備。所以既然你不能完全消除它們,這有什麼意義呢?讓用戶選擇是否希望表單佔用整個屏幕。如果他們這樣做,標題欄中有一個方便的「最大化」按鈕。 – 2012-01-29 10:40:46

回答

1

可以使用得到屏幕的分辨率:

Rectangle rect = Screen.AllScreens[0].Bounds; 
//Maybe you need to use WorkingArea instead of Bounds. 

從那裏,你可以使用你想要的80%。更多的信息在這裏:http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

+0

是的,你肯定會想要使用['Screen.WorkingArea'](http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea.aspx)。這不包括任務欄,停靠的窗口/工具欄等等。 – 2012-01-29 10:38:59

2

你會想要使用Load事件,所以你不受自動窗體縮放的影響。像這樣:

protected override void OnLoad(EventArgs e) { 
     var scr = Screen.FromPoint(this.Location); 
     this.Size = new Size((int)(scr.WorkingArea.Width * 0.75), 
          (int)(scr.WorkingArea.Height * 0.80)); 
     this.Location = new Point((scr.WorkingArea.Width - this.Width)/2, 
            (scr.WorkingArea.Height - this.Height)/2); 
     base.OnLoad(e); 
    } 
相關問題