关于panel中多个窗体的切换问题(在线等)
我现在遇到一个问题:主窗体上有一个Panel,在panel上可能有多个窗体,如窗体A,B,C吧;在窗体A中,我用单键模式:
private static LoanList loanListInstance;
public static LoanList GetInstance()
{
if (loanListInstance == null||loanListInstance.IsDisposed)
{
loanListInstance = new LoanList();
}
return loanListInstance;
}
窗体B,C一样用。
在主窗体中的菜单中调用这些窗体,并显示在panel中:
CurrentAccount.Loan.LoanList loanlistform = CADIEC.CWMS.WindowsForm.CurrentAccount.Loan.LoanList.GetInstance();
loanlistform.TopLevel = false;
//this.panel_WorkArea.Controls.Add(loanlistform);
loanlistform.Parent = this.panel_WorkArea;
loanlistform.WindowState = FormWindowState.Maximized;
loanlistform.Show();
loanlistform.Activate();
我第一次调用是没有问题的,如我依次调用了窗体A,B,C;这时候我如果再想切换到A或B,就不行了,怎么也激活,窗体C始终显示在最前面。为什么呢?
还有我如何得到当前活动的窗体呢?比如,我要关闭当前窗体,我怎么得到当前的窗体。
求救!
--------------------编程问答-------------------- (1)如何切换窗体
A->BringFront()
(2)如何得到当前活动的窗体呢?
设置标记 --------------------编程问答-------------------- 有这个函数吗?如何设置标记?能不能说清楚点啊。 --------------------编程问答-------------------- 建议你生成了单件类之后,用visible控制a b c窗体的展现,不要用close和show方法。 --------------------编程问答-------------------- 用Visible是行不通的,比如我打开了窗口A,B,C,那么我关闭了窗口C后,窗口B就应该显示出来;如果用Visible的话,太麻烦了。 --------------------编程问答-------------------- 还有一个问题我一直搞不明白,为什么Panel上的窗体无法激活呢?比如我在窗体A中的Enter事件中写代码,在打开窗体时根本就不执行,直到我用鼠标点窗体A中的编辑字段,才会触发Enter事件,为什么呢?请大家帮帮忙吗?上火 --------------------编程问答-------------------- 我也是遇到一样的问题啊 --------------------编程问答-------------------- 我想起来了,是用户控件吧,你去试一下 --------------------编程问答-------------------- up --------------------编程问答-------------------- 我在Panel上放的是窗体,不是控件! --------------------编程问答-------------------- RackProfile rackProfile = new RackProfile(this, "", "Add");
rackProfile.TopLevel = false;
splitContainer1.Panel2.Controls.Add(rackProfile);
splitContainer1.Panel2.Controls.SetChildIndex(rackProfile, 0);
rackProfile.Show();
SetChildIndex() 可以实现你想要的效果. --------------------编程问答-------------------- 这只能用多个panel来显示,隐藏窗体 --------------------编程问答-------------------- 一个panel放一个窗体,然后控制panel的显示隐藏 --------------------编程问答-------------------- RackProfile rackProfile = new RackProfile(this, "", "Add");
rackProfile.TopLevel = false;
splitContainer1.Panel2.Controls.Add(rackProfile);
splitContainer1.Panel2.Controls.SetChildIndex(rackProfile, 0);
rackProfile.Show();
SetChildIndex() 可以实现你想要的效果.
--------------------编程问答--------------------
解决了吗 --------------------编程问答-------------------- 加个textbox控件。设备窗易做图动再设置这个编辑框焦点。这个应该可以,以前是这样做的。
或者在setstyle中设置selectable试试。这个没试过。 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 应该用Tab控件,通过隐藏TabPage来切换
或
编写用户控件。。。。。。
补充:.NET技术 , C#