請教一下大哥大姐!!!!


我在程序里面調用的是sys.dll文件,我在MDI窗體按鈕里面有這些行代碼:
sys.SForm MSForm=new SForm()
MSForm.show();
現在的問題是我點了一下這個按鈕,運行一個實例,可我再運行一下時又運行一個實例,如果用變量控制,可我這個是調用的dll文件,當MSForm關閉時又不知道如何回傳一個參數給主MDI窗體了,我是想這個窗體只運行一次。請問該怎么解決。
另外我的子窗體如果是最大化時,子窗體的標題就靠到主窗體的標題欄上了,並且子窗體的圖標也到主窗體的標題欄上了,這個怎么辦啊

12 个解决方案

#1


sys.SForm MSForm=new SForm()
MSForm.show();
------------------------
你每次調用都聲明新對象,當然會出現另一個,你只聲明一次就好了。比如你在sys.dll中這樣:
public static SForm MSForm;在構造函數中MSForm=new SForm();在MDI窗體按鈕里面有這些行代碼:sys.MSForm.show();

#2


添加一個變量:

在主窗體中:
private  SForm MSForm = null;

在按鈕click里面:
if (MSForm == null) then 
{
   MSForm=new SForm();
}
MSForm.show();


在MSForm的Close事件里面:
this.MdiParent.MSForm  = null;

或者你在Closing事件里面,不讓用戶Close這個窗體,只是Hide掉它:
e.Cancel = true;
this.Hide();

#3


sys.SForm MSForm=new SForm()這句聲明別放在按鈕事件里.

MSForm應該有關閉事件.

#4


同意樓上的!

#5


將MSForm定義成類的private的實例變量,
然后
if(MSForm == null)
{
    sys.SForm MSForm=new SForm();
}
MSForm.show();

#6


感謝樓上的大哥些哪
另外我的子窗體如果是最大化時,子窗體的標題就靠到主窗體的標題欄上了,並且子窗體的圖標也到主窗體的標題欄上了,這個怎么辦啊

#7


See it
http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c4c.aspx#q521q

#8


樓上的大哥,我按照你給的地址看了一下,然后我也改成了這個代碼,可為什么我第二次運行時就沒有任何顯示了呢,

#9


第二次你加上如下一句:
frmChild.BringToFront();

#10


我加了還是不行啊

#11


我也寫了個demo,沒發現問題啊

#12


最好能把你的代碼全貼出來,或者把幾個關鍵點貼出來;否則無法幫你查找錯誤!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com