C 中使MDI程式只開啟一次子窗體的方法

2021-05-23 18:35:05 字數 660 閱讀 7835

前段時間教學生mdi程式,實現只開啟乙個子窗體例項,不能多次開啟同一子窗體時,發現判斷子窗體是否為null不行。

google了一下當時沒找到。後來自己想了個用布林變數的方法,判斷子窗體是否已關閉,後來感覺如果子窗體很多要設定很多布林變數,這樣做太麻煩了。

今天要開始做課程設計了,總不能教學生這種下三濫方法吧,又開始google了。

最後終於在這個頁面找到了答案:

唯一跟作者不同的是,我認為子窗體不必要時static靜態的,靜態成員的主要目的是類有多個例項時只有乙個拷貝,並且可以直接通過類名呼叫,一直存在。這在mdi父視窗中是沒有意義的。

還有通過單步除錯,我發現else分支裡的activate從來就沒執行過,所以只要下面的**:      

if (f==null || f.isdisposed)

即判斷子窗體是否為空(當第一次開啟子窗體時)或者子窗體記憶體是否已被釋放(即子窗體被關閉之後,這時判斷是否為null是沒有用的),如果成立才建立新窗體。

看來自己水平還是有限啊,再次感謝google,感謝作者!同時看來只要耐心找,沒有問題是找不到的。多思考,多google,答案是一定要有的,只是要有時間付出罷了。。。

C 同一窗體一次只開啟乙個實列 單態

在窗體中加入如下 private static 窗體 instance null 新增乙個屬性 public static 窗體 instance getreturn instance 在窗體的建構函式中加入如下 instance this 建立窗體closed事件 private void 窗體 ...

C 如何實現MDI窗體不重複開啟同一子窗體

mdi父窗體預設是可以重複開啟i子窗體的,而我們可以通過如下方法禁止重複開啟子窗窗體 開啟子窗體的函式 private void openchildform form formchild formchild只是是例項化的但既沒有設定為父窗體的子窗體也沒有顯示 if isopened 如果沒開啟 該函...

設定C 窗體程式只能啟動一次

在程式的main函式中加入以下 bool creatednew system.threading.mutex instance new system.threadwww.cppcns.coming.mutex true,mutexname out creatednew if creatednew e...