none
又是MDI子視窗無法最大化? RRS feed

  • 問題

  • 各位大大:

       做了一個主menu,有toolstrip,點了某個form之後,會代入另一個主作業form,form的formborderstyle我設成None,

    在show之前寫了WindowState 為Maximized,run起來後,非但沒有最大化,toolstrip還會把主form的畫面遮一行起來,怎會這樣呢?不知道是哪個屬性會造成這樣??

    2008年6月22日 下午 01:58

所有回覆

  • HI,

     

    MDI子視窗是可以最大化的, 但是MDI的父視窗要記得將IsMdiContainer屬性設定為True, 而且建立MDI子視窗物件時要將MdiParent屬性的內容值設定成MDI父視窗物件才可以

     

    tihs

    2008年6月23日 上午 12:37
  • tihs大大您好:
     以下是我測試的畫面
    http://www.pixnet.net/photo/flywang/94008246
    http://www.pixnet.net/photo/flywang/94008248
    我在子視窗的上方放一個label和button,form show出來會被menu遮住,按了右上方的縮小後,label和button才會出現。

    程式碼如下,staticVarfrmCustInput紀錄父視窗的value
                Frm a = new Frm();
                a.MdiParent = staticVarfrmCustInput;
                a.WindowState = FormWindowState.Maximized;
                a.Show();

    2008年6月24日 上午 09:56
  • HI,

     

    您的程式看起來沒有什麼問題, 您是由主視窗負責顯示MDI子視窗的嗎? 我由MDI父視窗執行顯示MDI子視窗的動作, 不會有子視窗被覆蓋的情形:

     

    Form2 f = new Form2();
    f.MdiParent = this;
    f.WindowState = FormWindowState.Maximized;
    f.Show();

     

    tihs
    2008年6月25日 上午 12:57
  • tihs大大您好:
      我的主視窗有menustrip,是由menustrip上的功能列觸發顯示子視窗。
    2008年6月25日 上午 09:28
  • Hi,

    我覺得可能是因為你的子表單是"無邊框"的關係,你試試看不要設定屬性為最大化,手動的將子表單的大小設定成父表單的ClientSize+MenuStrip的高度。

     

    2008年6月25日 上午 10:15
  • Hi bauann:
       不過ClientSize會隨著使用者的解析度而變更啊~因為父視窗我是設為最大化,那我是不是要先抓到使用者螢幕的解析度,然後再去變更子表單的大小。
    2008年6月27日 上午 01:53
  • ClientSize有屬性可以抓,不用寫死的,我記得是在Form(Me)的屬性裡面。

     

    2008年6月27日 上午 01:57