使用C#开发传统的WINDOWS程序时,我在一个MDI窗口菜单下打开了一个窗口,问:
1. 如何让这个窗口只打开一个实例?现在我每点一次菜单,就开一个窗口,我用的SHOW方法。
2. 如何让程序关闭这个窗口后才能回到MDI主窗口,而不是可以在打开这个窗口的同时还可以操作菜单。
1. 如何让这个窗口只打开一个实例?现在我每点一次菜单,就开一个窗口,我用的SHOW方法。
2. 如何让程序关闭这个窗口后才能回到MDI主窗口,而不是可以在打开这个窗口的同时还可以操作菜单。
解决方案 »
- 未处理SqlException
- C#写XML文件时,如何利用DOM给XML里的某个元素写多个Namespce
- 学习.NET注重与托控件还是代码
- 怎样过滤List或者ComboBox中相同的选项?在线等!
- datagridview默认都是白色的问题
- 我需要一个图文混排的编辑器,不知道怎么做,如果自己做怎么做,那里有已经做好的,大家推荐一下
- 在SOCKET通讯中的端口回收问题?
- 在winform中怎样使 回车代替button_click
- 用c#写winform程序时,怎么判断窗口已弹出?
- 最近要搞一个小的题库,想知道一些数据库方面的,随便给点意见都给分
- c#穿透代理服务器
- 如何判断输入的是否是字母
2\用ShowDialog()打开
MDI窗口菜单事件如下:private void menuItem1_Click(object sender, System.EventArgs e)
{
foreach(Form f in this.MdiChildren)
{
if (f.Name == "Form2")//判断打开的子窗体中是否有Form2
return;
} Form2 f2 = new Form2();
f2.MdiParent = this;
f2.Show();
}
{
int Children_Count=this.MdiChildren.Length;
for(int i=0;i<Children_Count;i++)
{
if (this.MdiChildren[i].Name==Frm_Name )
{
this.MdiChildren[i].WindowState=System.Windows.Forms.FormWindowState.Normal;
this.MdiChildren[i].Focus();
return true;
}
}
return false;
}
2 用ShowDialog()
楼主既然要实现类似于ShowDialog()模态对话框方式,那干吗又用MDI
form2 fm2 = new form2();
fm2.MdiParent = this;
fm2.Showdialog();
把判断Form2是否已经打开的那段代码提出来写个公共方法不就行了啊
每个菜单事件中调用方法判断一下就行了
大家说说为什么调用showdialog()方法报那个顶级窗口的错?以前很多开发平台的Showdialog()不是用得蛮好吗?还有就是设窗口属性为response的方法等等。
另外说一下,这个FM2是我直接创建一个form的方法创建的,不知道这里有没有问题
{
private static frmInfoDept frm = null;
private frmInfoDept()
{
myInfoDeptBll = new InfoDeptBLL();
InitializeComponent();
}
public static MdiChildEditForm GetInstance()
{
if (frm == null || frm.IsDisposed == true)
{
frm = new frmInfoDept();
}
else
{
frm.Activate();
}
return frm;
}
...
}2.ShowDialog()