非模态窗体的创建
最近工作要做一个跟ArcGIS一样的识别窗体,发现该窗体不需要关闭就可以进行主窗体的操作,搜寻诸多材料(多是MFC窗体中的),才知道是使用非模态窗体制作出来的。在Winform中模态窗体和非模态窗体的使用在于调用的方法不同。
模态窗体:ShowDialog()方法,非模态窗体使用:Show()方法。
区别:
模态窗体利用show方法设置好了,确实可以实现与主窗体的交互,但是如果再次触发调用非模态窗体事件,则非模态窗体依旧弹出,也就是有多个窗体,所以我们需要判断该窗体是否已经存在,如果存在就不要在调用窗体show事件。
例如:利用vs添加两个窗体,Form2中放一个文本框,Form1中放一个button按钮,弹出文本框的内容。
我们在Form1中进行写button的单击事件,注意:此时的frm对象应该创建在单击事件之外;
public Form2 frm; private void simpleButton1_Click(object sender, EventArgs e) { if (frm==null||frm.IsDisposed) //如果窗体不存在 { frm = new Form2(); frm.TopMost = true; //显现在主窗体前面 frm.Show(); MessageBox.Show(frm.textEdit1.Text); } else //窗体存在 { frm.TopMost = true; frm.Show(); MessageBox.Show(frm.textEdit1.Text); } }