那位大哥有空,帮忙看一下这个窗体互调的问题? 在同一个线程中,存在一个主窗体A,和N个子窗体A1,A2,A3,....写一个函数,使用户能够在任何窗体单击一个按钮都能进入A1这个窗体。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得需求描述不太清楚,最简单的是A1里做个静态方法,作用就是show A1(单件模式) 如果是MDI的话:子窗体命名:A1,A2,A3....在主窗体定义一个GetChildForm()的方法,返回A1窗体,记得关键字用public,然后再在子窗体的button_Click中调用该方法,并且把返回的form设为当前活动窗体。 楼主在这个线程中new一个窗体的实例,show出来不就进去了? 我在主窗体已经把每一个子窗体都new过了,然后通过主窗体的属性来互相访问。现在的问题是,如果再把A1窗体new的话,就是重新打开了一个窗体,就会存在两个窗体了。 不要重新实例化,只要把 A1.Active=true;A1.show()就应该可以了。 记错了,应该是A1.Focus();好像没有Active这个属性。 按楼上的还是不行的,因为比如说我是在A3这个子窗体点按钮,那么结果是A1和A3同时存在,因为你没有把A3关掉。而且也不能用this.visibel=false;因为我要写得是一个函数,然后让botton_click直接调用这个函数,函数里面不能包含this。 在需要a1的窗体中。弄个a的引用就ok了 我换一种提问方式,我在一个窗体内用this.visibel=false;能够把当前窗体设为不显示,但我要写一个函数,使任意一个窗体调用这个函数的时候都能实现上面的功能。而this在函数里是不能用的,我应该怎么在函数里找到当前窗体呢? 把你new过的窗体设成全局变量,就不需要每次都New了 窗口 frmA frmB frmC在frmA类里frmB fb= null;在frmB类里frmA frma = new frmA();frma.fb = this;在窗体A中关闭窗体Bfb.visibel =false; 发段我的代码给你看看有帮助吗? foreach (Form Frm in this.MdiChildren) { if (Frm.Name == "DB_in") { if (!Frm.Visible) { Frm.WindowState = FormWindowState.Normal; Frm.Activate(); Frm.Show(); return; } else { Frm.Activate(); return; } } } 要关闭当前窗口也简单啊,直接close()就是了,我自己已经测试过了。 C#验证用户名和密码的数据库操作的小问题 activePDF Toolkit对于图片处理有什么优势? 怎样截取字符串? winform中如何画一定宽度的直线 XML加密 与DATASET 打开的窗体值传递问题? 求一个匹配 经过UrlEncode的汉字的 正则表达式 2003中,如何得到菜单的name 请教在C/S下如何运行时动态确定控件属性? 请问一个将图片存入数据库的问题 算24 有没有办法可以做到这点.后图抓图.
子窗体命名:A1,A2,A3....
在主窗体定义一个GetChildForm()的方法,返回A1窗体,记得关键字用public,然后再在子窗体的button_Click中调用该方法,并且把返回的form设为当前活动窗体。
现在的问题是,如果再把A1窗体new的话,就是重新打开了一个窗体,就会存在两个窗体了。
不要重新实例化,只要把 A1.Active=true;A1.show()就应该可以了。
而且也不能用this.visibel=false;因为我要写得是一个函数,然后让botton_click直接调用这个函数,函数里面不能包含this。
但我要写一个函数,使任意一个窗体调用这个函数的时候都能实现上面的功能。
而this在函数里是不能用的,我应该怎么在函数里找到当前窗体呢?
frmB fb= null;在frmB类里
frmA frma = new frmA();
frma.fb = this;
在窗体A中关闭窗体B
fb.visibel =false;
foreach (Form Frm in this.MdiChildren)
{
if (Frm.Name == "DB_in")
{
if (!Frm.Visible)
{
Frm.WindowState = FormWindowState.Normal;
Frm.Activate();
Frm.Show();
return;
}
else
{
Frm.Activate();
return;
}
} }