一、參照自帶例子做個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 重整函式的 需要處理兩件事 修改子窗體的大小,重新計算投影每個子窗體的投影矩陣.在我們的情況中,我們不需要渲染任何幾何圖案到主窗體,所以我們可以跳過重新計算投影矩陣這一步.先來介...