你要記住,你的形式與一些默認的大小值開始並雙擊剛剛2個狀態之間切換。
在你的正常狀態的形式將獲取它的最後一個(在你的情況下默認值)的大小,你可以重寫:
Width = Screen.PrimaryScreen.Bounds.Width;
Height = Screen.PrimaryScreen.Bounds.Height;
的另一件事是,你的申請一些所謂的開始位置的(從我記得是什麼)默認在屏幕的中心,你可以用更改:
Form.StartPosition = new Point(0, 0); // top-left corner
現在你在你的應用程序了做的是檢查窗口狀態之間切換。最簡單的方法是使用WndProc
並等待在this msdn page列出的郵件:
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MAXIMIZE = 0xF030;
const int SC_RESTORE = 0xF120;
if (m.Msg == WM_SYSCOMMAND)
{
switch((int)m.WParam)
{
case SC_RESTORE:
// your window was restored (double clicked on the command bar)
// set it's window state back to maximize or do whatever
break;
case SC_MAXIMIZE:
// your window was maximized .. no actions needed, just for debugging purpose
break;
}
}
base.WndProc(ref m);
}
只要堅持在窗體上的在onResize事件處理程序,並把它放回去。有人想知道爲什麼你盡力激怒你的用戶。 –
@TonyHopkinson所以你想說的是我在事件處理程序代碼中將「WindowState」設置爲「Maximized」? 嘿,這是否令人討厭?!!!! – hecate
@stuartd您是否意味着在運行時將最大化窗體的大小設置爲「MinimumSize」屬性。 – hecate