刚刚开始使用c# winform开发
一个比较菜的问题
用 form.ShowDialog();打开一个新form后 如何切换到父窗体呢
如果能切换的话 两个字窗体间如何实现一个窗体操作了数据库后另外一个窗体如何刷新数据呢

解决方案 »

  1.   

    在csdn上搜了下 不少都是用个按钮hide();
    能不能不用按钮 直接就可以相互切换呢
      

  2.   

    在对话框打开的状态下是不能回到父窗口的。
    要更新父窗口的数据,可以用 this.Owner找到父窗口,再执行父窗口中的公共方法。
    也可以用事件或委托的方式处理
      

  3.   

    用this.owner找到父窗体 那就需要出发事件了
    比如一个程序的主窗体有很多的子功能按钮
    点击其中一个字功能按钮 开启一个子功能窗体 
    如何实现直接切换到主窗体然后开启另一个子功能窗体
    想用form.ShowDialog();应该无法实现吧 
      

  4.   

    要想来回切换,我觉得不能用ShowDialog()。
    自己new新的form吧。
      

  5.   

    ApplicationContext appCtx = new ApplicationContext(new Form1());
        Application.Run(appCtx);
    用这个会出现中断:
    + $exception {"在单个线程上开始另一个消息循环是无效操作。请改用 Form.ShowDialog。"} System.Exception {System.InvalidOperationException}
      

  6.   

    new 一个新的form???
    能不能说详细点
      

  7.   

    两个字窗体间如何实现一个窗体操作了数据库后另外一个窗体如何刷新数据呢
    关于这个你可以参考OBSERVER模式,微软的智能客户端ISSUEVISION里有详细的使用方法
      

  8.   

    要切换窗体,是不能用ShowDialog(),这个是消息模式窗体。可以用Show()。要在子窗体变更父窗体的数据 可以在父窗体里面写个
    父窗体 fromMail.cs
            //注销用户
            internal void Mail()
            {
               this.close();
            }
    然后在子窗体里面用this.owner找到父窗体fromMail from =(fromMail)this.owner;
    from.Mail()调用Mail()事件
    如果是DataGrid控件可以定义一个静态的数据原,变更数据原 也可以实现动态变更的