问题对象:Mdi窗体描述:
1.做一项目,打算用两个窗体,一各主窗体,一个子窗体2.想素有的功能公用一个子窗体,所有的功能界面全部手写,写在同一个子窗体上3.关闭子窗体使用form。Hide()方法,问题:
1.为什么关闭一个窗体,再打开同一个窗体(功能相同)时窗体在主窗体中的偏移量不断增大?2.在多个窗口间切换时出现事件不响应的问题,不知是何故请高手指教,谢谢相关代码:主窗体:
此方法有菜单事件调用,其它功能类似
private void Company_Reg()
{
Common common = Common.GetInstance("CompanyReg",this);
common.Show();
}公共子窗体
private static Common common = null;
public static Common GetInstance(String WindowCaption,MainForm main)
{
if(null == common)
{
common = new Common();
common.MdiParent = main;
} switch(WindowCaption)
{
case "Login":
new Login(common);break;//绘制登陆界面
case "CompanyReg":
new CompanyReg(common);break;//绘制公司信息注册界面
default:
break;
}
return common;
}子窗体的绘制代码
public class CompanyReg
{
Common obj = null;
                public CompanyReg(Form form)
{
obj = (Common)form;
InitializeForm();//具体的绘制窗口的代码和事件
}
        }请问这个思路由没有问题,有没有更好的方法呢?

解决方案 »

  1.   

    我原来都是隐藏旧窗口的,
    后来我关闭旧窗口就不会出现事件不响应的问题了,但是我设置form。left和form。top窗口的偏移还是不停的变化程序共享一个窗口的,
      

  2.   

    现在谁能帮忙解决子窗体偏移的问题
    我也设置了top和left属性了
      

  3.   

    问题解决描述
    1.偏移问题:设置了窗体的move事件,在move事件中设置top和left属性2.事件丢失问题:用close方法代替hide方法,每次生成窗体时都new一个新窗体,hide窗体时为什么会出现事件丢失现象原因不明等待由更好的解决方法出现
    新的问题:思路:在主窗体启动时先显示登陆界面,根据登陆界面的返回值来确定是否需要显示主界面,(网上常用的方法)问题:登陆成功后固然可以显示主界面,但是登陆失败后程序就自动关闭了。程序如下
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Index obj = new Index();
    if(obj.ShowDialog() == DialogResult.OK)
    {
    obj.Close();
    Application.Run(new MainForm());
    }
    }我想是因为if下面没有内容了,就好比控制台程序运行到最后就会退出程序一样,除非你调用Console。Read()方法。等待解决方案……
      

  4.   

    哈哈,使用绝招
                               while(true)
    {
    Index obj = new Index();
    if(obj.ShowDialog() == DialogResult.OK)
    {
    obj.Close();
    Application.Run(new MainForm());
    break;
    }
    }
    问题解决,请高人纠错