機房收費中Panel控制項解決子父窗體顯示

2021-06-26 02:05:51 字數 2471 閱讀 4936

個人版機房中開始沒有考慮子父窗體的設定問題,這樣出現什麼問題,如果將主窗體關閉,而你的開啟窗體仍不會關掉,這是肯定不允許的,網上查了一下,還挺容易。

private sub menuinquirepresentcash_click(sender as object, e as eventargs) handles menuinquirepresentcash.click

dim fipc as new frminquirepresentcash '例項化frminquirepresentcash窗體

fipc.mdiparent = me '將例項化窗體的父窗體設定為當前main窗體

fipc.show()

end sub

但是這樣的結果是子窗體被父窗體控制項覆蓋,怎麼辦?

記得第一次機房中用到

frame

容器性質的控制項,在

.net

中找到panel

控制項,將主窗體中的控制項都放在

panel

中,我的做法是每次子窗體開啟時將

panel

隱藏,退出時再顯示。

private sub menuinquirepresentcash_click(sender as object, e as eventargs) handles menuinquirepresentcash.click

dim fipc as new frminquirepresentcash '例項化frminquirepresentcash窗體

fipc.mdiparent = me '將例項化窗體的父窗體設定為當前main窗體

fipc.show()

panel1.visible = false '子窗體開啟時 panel1不可見

end sub

這樣問題又來了,如果開啟乙個子窗體,然後再開啟乙個,這時選擇關閉其中乙個的話,這是

panel

控制項將為可見,也就是說另外乙個窗體還是被隱藏。

一直都是這麼做的,但總覺得這麼做太沒有思想了,偶然看到一清部落格也有關於這個問題方案,在

u層新建了乙個se***ichild類,有兩種解決方法,一是將

子窗體顯示在mdi主窗體panel控制項之上,二是將子窗體上的控制項內嵌到mdi主窗體panel控制項之上

,然後再主窗體直接呼叫這個類的方法。

'/*********************

'類名稱:se***ichild

'功能:

'命名空間:charge.ui

'小組:

'版本號:v2.0.0

'**********************/

public class se***ichild

'子窗體顯示在mdi主窗體panel控制項之上

public sub se***ichildfront(frm as form, panel1 as panel)

frm.toplevel = false '設定它的頂級為false

frm.formborderstyle = windows.forms.formborderstyle.sizable '設定子窗體的邊框風格

frm.parent = panel1 '設定子窗體的父容器控制項是panel控制項

frm.show() '子窗體顯示

frm.bringtofront() '設定子窗體在最前面

end sub

'子窗體上的控制項內嵌到mdi主窗體panel控制項之上

public sub se***ichild(frm as form, panel1 as panel)

frm.formborderstyle = formborderstyle.none '改變frmmain的邊框風格,為無邊框風格

frm.toplevel = false '不將子窗體設定為頂級窗體

panel1.controls.add(frm) '設定panel控制項中控制項集合應該包括frm子窗體

frm.show()

end sub

end class

很好解決了子窗體的最小化和顯示問題,美中不足的是一清的方案沒有用到單例模式,他在

u層類的時候沒有將子窗體例項化,所以也是顯示乙個窗體,所以單例模式還是要用的。因為單例模式在每個子窗體中宣告變數和方法,我也沒有把得到每個子窗體的例項方法抽象出來,現在想著如何在

u層類中呼叫例項化子窗體的方法,研究中。。。

遇到問題首先自己思考找方法,然後可以通過和別人交流拓寬自己的思路,身邊的小夥伴都是我們的巨人!

Winfrom的Panel控制項新增子控制項排序問題

用 迴圈給panel中新增多個控制項例項,並且設定dock屬性後,子控制項的排序是後新增的在最上面,這是因為winfrom機制是最新新增的控制項會排在最前面,而不是最後面。但是需求是先新增的要放在最上面,為了實現這個需求 可以把需要的控制項反向新增來解決這個問題,但是不是最好的解決方案。最好的解決方...

機房收費系統中dtpicker控制項的使用

在做機房收費系統的時候會有查詢記錄的,還會有好幾個窗體用到了組合查詢,在這些查詢中有的需要填寫日期和時間,當你選擇完欄位名後如果只是乙個text,那就需要乙個個的去輸入,不僅浪費時間而且沒有成就感,更談不上效率下面我們就來認識認識乙個控制項 dtpicker。首先,我們需要知道什麼是dtpicker...

VB版機房收費 MSFlexGrid控制項

一 在機房中遇到的問題 問題一 用msflexgrid控制項的時候,設定click事件以達到查詢的目的,並且將查詢內容顯示在控制項中,需要刪除上一次查詢的內容,有兩種方法。第一種方法是,在第二次顯示內容的時候先判斷控制項的第二行是否有內容,有的話則刪除,用迴圈語句來判斷,直到第二行 除了第一行的表頭...