C#中关于子类窗口重复打开的问题

就是在MDI窗口中打开子窗口,我需要实现的功能是相同的子窗口只能打开一次,不能同时打开相同的子窗口,附加一个小问题就是怎么在登录页面上输完密码,点回车,就直接登录,不用客意点登录按扭,希望回答者写的简洁易懂,有加分的

窗体有个属性AcceotButton你把它关联到,你的控件就可以了,关于窗体代开问题,你可以家判断,如果本窗体已经打开,则不能再次打开
foreach (Form. childrenForm. in this.MdiChildren)
{
//检测是不是当前子窗体名称
if (childrenForm.Name == "子窗体名称")
{
//是的话就是把他显示
childrenForm.Visible = true;
//并激活该窗体
childrenForm.Activate();
return;
}
}
或者
frmPurvey frmp = new frmPurvey();//创建要打开的窗体对象
bool isOpen = true;
foreach (Form. frm in this.MdiChildren)//遍历已打开的MDI
{
if (frm.Name == frmp.Name)
{
frmp.Activate();//赋予焦点
frmp.WindowState = FormWindowState.Maximized;//设置窗体最大化
isOpen = false;
break;
}
}
if (isOpen)//如果没有找到相同窗体则打开新窗体
{
frmp.MdiParent = this;//设置父窗体
frmp.Show();
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-11
先说回车的问题吧,每一个FORM都有一个acceptButton属性,你在这属性上设置事件设置直接登录事件就行了,你看下属性就明白了
子窗口只打开一次,你用form.showdialog()方法,这方法要求必须处理好了当前窗口才能回到原窗口去,和form.show()有区别的,你试下就知道了
第2个回答  2009-03-11
方法一:
设置成模式窗体啊!
Form2 f2 = new Form2();
f2.ShowDialog();
方法二:
public static Form2 f2 = null;//
public static Form2 show()
{
if (f2 == null)
{
f2 = new Form2();
f2.Show();
return f2;
}
return f2;

}

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
f2 = null;
}
上述是子窗体的

你是说按Enter把就可以登录吧那就是窗体的AcceptButton属性啊!把里面添上你想要的按钮名字
第3个回答  2009-03-11
第一个问题:
在点击父界面使用下面代码:
private frmDBSetting frmDBSetting;

if (frmDBSetting== null || frmDBSetting.IsDisposed)
{
frmDBSetting = new frmDBSetting();
frmDBSetting.MdiParent = this;
}
frmDBSetting.Show();
frmDBSetting.Focus();

意思是在第一次打开时实例化一个窗体,以后如果该窗体已存在就不重复打开

第二个问题:
按键的AccessButton属性设为Enter就好了
第4个回答  2009-03-11
MDI子窗口创建static静态对象 这样才能保证每次实例化的都是同一对象
否则 每次都是新建一个子窗体打开了

form属性中加上 defaultbutton="btnSubmit"

C#中关于子类窗口重复打开的问题
窗体有个属性AcceotButton你把它关联到,你的控件就可以了,关于窗体代开问题,你可以家判断,如果本窗体已经打开,则不能再次打开 foreach (Form. childrenForm. in this.MdiChildren){ \/\/检测是不是当前子窗体名称 if (childrenForm.Name == "子窗体名称"){ \/\/是的话就是把他显示 childrenForm....

c#中限制MDI子窗体重复打开
在打开事件中直接检测是否已经打开此MDI窗体 \/\/ 是否已经打开了?(用循环来判断)foreach (Form childrenForm in this.MdiChildren){ \/\/检测是不是当前子窗体名称 if (childrenForm.Name == "子窗体名称"){ \/\/是的话就是把他显示 childrenForm.Visible = true;\/\/并激活该窗体 childrenForm.Activa...

在C#中,为什么有时候明明父类已经实现了某个接口,而它的子类也会去实 ...
不重复,这正是面向对象的灵活之处,这叫继承时多态,另外一种多态叫运行时多态。可能说这种专业的术语显得的不易理解。我给你举一例子:例如鸟继承于动物。鸟是所有鸟类的父类,鸟类实现了飞翔这样的接口,但是不是说所有的鸟都是这样飞的,所以不同的鸟(子类)需要重写父类(鸟)的飞的这个接口,...

C#中在一个窗体中通过按钮打开另一个窗体
1、在winform项目点击右键-添加-新建项-Windows Forms-Windows 窗体,新建一个要弹出的窗体Form2。2、在Form1中拖入一个button,修改Text属性为弹出窗体。3、双击按钮,进入代码编写界面。4、编写代码“Form2 form2=new Form2;form2.ShowDialog();”。5、点击启动按钮,或者按F5键,运行程序。6、点击...

C#中运行时不断出现系统弹出窗口
你现在的帐号和密码都正确,就弹出了这么多个对话框.这对话框是你自己在代码里写的:MessageBox.Show("连接未关闭,连接的当前状态为已打开");那你就应该在你登后的处理最开始处打上一个断点,再运行,按F11一步一步看看是哪里逻辑有错.麻烦楼主提供详细一点的情况.这样我会更快帮你解决问题....

关于c#窗口继承的问题
把 form 1中的button 属性为private 或在form2和3里写代码 让form1中button的可见性为false

C#下 子类继承父类的虚方法后 使用override重写父类方法 和 不使用ove...
不使用override重写的话 子类new出来的对象 调用该虚方法 是调用的在父类中的虚方法的定义的方法体执行的 打个比如吧 就像 你继承父亲的房子 但是房子如果没过户(重写) 户名不是你 所以还是使用父亲的 但是过户了就是你的了~! 比喻不是很直观 呵呵 子类对象重写后调用的时候就是子类中重写后...

C#窗体继承后,如何在子类窗体中修改父窗体中控件的事件?
你需要将父窗体的引用传到子窗体中,比如重载MergeForm2的构造函数,添加一个MergeForm1的参数,然后将子窗体的MergeForm1类变量指向这个引用。更改后MergeForm2部分代码如下:public partial class MergeForm2 : Form { \/\/声明一个MergeForm1引用 MergeForm1 Parent;...\/\/重载构造函数 public MergeForm...

c# 中 子类不继承父类的构造函数 但是子类默认调用父类的构造函数,这两...
通过一个程序来解释 using System;namespace ConsoleApplication1{ \/\/ 这个是父类 public class MyBase { public MyBase() { Console.WriteLine("MyBase构造函数"); } } \/\/ 这个是子类,继承了父类 public class MyClass : MyBase { public MyClass() ...

C#的继承问题,关于子类能否直接用父类的索引函数?
可以,都是一家人!!

相似回答