c mdi子窗體簡單教程

2022-06-11 07:15:10 字數 1445 閱讀 7838

一、參照自帶例子做個mdi窗體

1、加入父窗體mainform,並加入乙個選單欄,new form1   form2   windows

2、給new加命令

private int childformnumber = 0;

private void newtoolstripmenuitem_click(object sender, eventargs e)

現在試一下,按選單new能生成子窗體了。但是,當所有的子窗體最大化,下面的會被最前面的擋住,如何把它們找出來呢?這就要用到選單windows項了(不一定要叫windows,隨便的),

3、網上都說把windows選單的mdiwindowlistitem屬性設為true, 不過我在vs2008中沒有找到。可以這樣設定,開啟mainform.designer.cs,在「windows 窗體設計器生成的**」一段中加一句「this.menustrip1.mdiwindowlistitem = this.windowstoolstripmenuitem;」(當你們的選單名稱不一樣時自己改)。現在,再按選單new後,windows下面會自動加入新生成的子窗體名稱,跟word一樣。

二、顯示自己製作的窗體。

其實上面的例子沒有多在實際用處,除非每個人都去編寫字板。好,現在做乙個小小的改進。在子窗體中顯示自己製作的窗體。

在工程中新建兩個窗體form1,form2,分別給form1和form2選單加入命令。

private void form1toolstripmenuitem_click(object sender, eventargs e)

private void form2toolstripmenuitem_click(object sender, eventargs e)

現在點選form1和form2後,能在子窗體中分別顯示工程中的form1和form2窗體了。但是這也沒有實際用處(網上很多教程都止於這一步),因為當你點選了兩下form1後,子窗體中會顯示兩個一模一樣的form1窗體,實際程式設計中顯然是沒用的,比如我的工程專案中想在form1窗體中設定幾個引數,form1只要顯示乙個就夠了。下面再做點改進,

private static form1 form1;

private void form1toolstripmenuitem_click(object sender, eventargs e)

else

}private static form2 form2;

private void form2toolstripmenuitem_click(object sender, eventargs e)

else

}這樣,form1和form2窗體只會被例項化一次。即當form1窗體顯示時,再點選form1時,form1不會再建立乙個,而只是把在下面的提到最前面顯示,變成啟用的活動窗體。

三、題外話:mdi容器不能使用toolstripcontainer,可以用toolstrippanels代替。

C mdi子窗體最大化問題

c mdi子窗體最大化 2008 08 15 13 23 有時候我們需要在子窗體顯示的時候就是最大化 也就是填充了整個父窗體 但通常會遇到以下麻煩 如果在 visual studio 2005裡通過屬性工具欄設定了子窗體的 windowstate 為 maximized,然後在執行過程中會發現子窗體...

C MDI窗體選單合併工具欄

c mdi窗體選單合併子窗體 c mdi窗體選單合併子窗體c mdi窗體選單合併子窗體選單非常簡單,只需設定一下屬性allowmerge true就ok 但要合併工具欄,就稍微複雜一下了。c mdi窗體工具欄合併子窗體工具欄 第一,mdi窗體 frmmain為mdi窗體 private void f...

譯 GLUT教程 重整子窗體

lighthouse3d.com glut tutorial subwindows reshape subwindows 重整函式的 需要處理兩件事 修改子窗體的大小,重新計算投影每個子窗體的投影矩陣.在我們的情況中,我們不需要渲染任何幾何圖案到主窗體,所以我們可以跳過重新計算投影矩陣這一步.先來介...