對於剛剛接手的 機房收費系統。
該系統,最外層是一個MDI表單。對於其他的操作,都在MDi子表單裡面進行。
當看到這種表單的時候,我們毫不猶豫的就說,這個表單的主表單是一個MDI表單。其他的都是他的子表單。
所以我們在做系統的時候,建立一個MDI表單。但是我們會發現,在MDI表單上不能添加 按鈕等其他控制項。所以我們需要一個容器控制項。大部分人都會想到的時pictureBox因為這是一個非常簡單,有代表的容器控制項。
剛做完主表單的時候,沒有什麼錯。但是當你有MDI子表單form1的時候,你會發現,問題來了。不管你怎麼調整,子表單form1都看不到。
下面舉一個小例子,可以解決以上問題。
這是一個MDI表單,上面的是一個pictureBox控制項,當點擊按鈕的時候,彈出form1子表單。
當點擊按鈕的時候,你會看到下面這種情況。
子表單form1和picture在同一個層級。所以看不到子表單。
下面給出一種解決辦法:
使用API函數----,將form1設定成為pictureBox的子表單。這樣,form1就可以顯示在pictureBox前面了。
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click() SetParent Form1.hWnd, MDIForm1.hWnd Form1.ShowEnd Sub
使用api函數,就可以把子表單form1放置在pictureBox之上顯示出來了。
但是form1顯示的不完全,這時就需要設定子表單的長寬了
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click() SetParent Form1.hWnd, MDIForm1.hWnd Form1.Show Form1.Width = Picture1.ScaleWidth Form1.Height = Picture1.ScaleHeightEnd Sub
雖然問題解決了,但是視圖的美觀卻被打破了。
MDI子表單最大化後的標題列在MDI表單的功能表列下方。而且,MDI子表單最小化後,就找不到了。
為了實現更友好的主介面,我們在下一期講解。