精华内容
下载资源
问答
  • 首先在同一命名空间下添加新建多个窗体,选用一个作为主窗体,其他窗体作为子窗体。 经导师指导,我采用在主窗体加入一个面板,面板中调用三个主窗体的方法,经实践记录如下: 窗体隐藏:窗体隐藏 ...

    首先在同一命名空间下添加新建多个窗体,选用一个作为主窗体,其他窗体作为子窗体。
    经导师指导,我采用在主窗体加入一个面板,面板中调用三个主窗体的方法,经实践记录如下:
    在这里插入图片描述
    步骤1:新建项目
    主窗体我采用的DevExpress配件,当然直接新建普通的winform窗体也可以
    在这里插入图片描述步骤2:在同一个命名空间下添加多个窗体作为子窗体
    在这里插入图片描述在这里插入图片描述依次添加完成后,分别将窗体的(Name)属性修改为特定的名称(最好体现出该子窗体的功能,方便之后写程序)

    步骤3:在主窗体中定义一个panel控件,用作子窗体的父容器
    在这里插入图片描述
    步骤4:在主窗体中定义三个子窗体

    DigtalHandWritingForm sonForm1 = new DigtalHandWritingForm();
    picture_load sonForm2 = new picture_load();
    train_model sonForm3 = new train_model();
    

    定义子窗体的父容器为panel1

    sonForm1.Parent = this.panel1;
    sonForm1.Size = this.panel1.Size;
    sonForm2.Parent = this.panel1;
    sonForm2.Size = this.panel1.Size;
    sonForm3.Parent = this.panel1;
    sonForm3.Size = this.panel1.Size;
    

    对子窗体的一些其他操作:

    //将当前子窗体设置成非顶级控件
    sonForm1.TopLevel = false;
    sonForm2.TopLevel = false;
    sonForm3.TopLevel = false;
    //设置窗体最大化
    sonForm1.WindowState = FormWindowState.Maximized;
    sonForm2.WindowState = FormWindowState.Maximized;
    sonForm3.WindowState = FormWindowState.Maximized;
    //去掉窗体边框
    sonForm1.FormBorderStyle = FormBorderStyle.None;
    sonForm2.FormBorderStyle = FormBorderStyle.None;
    sonForm3.FormBorderStyle = FormBorderStyle.None;
    

    步骤5:初始化子窗体的状态,让子窗体全部显示,并设置可见性为隐藏

    //初始子窗体全部隐藏
    sonForm2.Visible = false;
    sonForm3.Visible = false;
    sonForm3.Visible = false;
    //子窗体全部显示
    sonForm1.Show();
    sonForm2.Show();
    sonForm3.Show();
    

    关于窗体隐藏也可参考如下链接
    窗体隐藏:窗体隐藏

    步骤6:定义三个按钮,通过按钮的点击事件来实现窗体的切换,这时候窗体的Visible属性显得就很重要了

    private void barButtonItem15_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
    	sonForm2.Visible = false;
    	sonForm3.Visible = false;
    	sonForm1.Visible = true;
    }
    private void barButtonItem17_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
    	sonForm1.Visible = false;
    	sonForm3.Visible = false;
    	sonForm2.Visible = true;
    }
    
    private void barButtonItem5_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
    	sonForm1.Visible = false;
    	sonForm2.Visible = false;
    	sonForm3.Visible = true;
    }
    

    演示一下程序效果:

    c#主窗体添加子窗体演示

    展开全文
  • C# winform 子窗体调用父窗体函数实现关闭该窗体打开另一个窗体;在父窗体分From1内嵌一个panel1,在panel1里载入From2,点击在子窗体From2中的按钮,清除panel1里的From2,新载入From3,点击在子窗体From3中的按钮...
  • 6种方法使MDI父窗体调用子窗体(子窗体同时只能显示一个)  有一个MDI窗体叫MainForm,多个子窗体,如Form1,Form2…… 要使子窗体同时只能显示一个, 那么 方法1 dim Form1 as new form1 Form1.showDialog() ...

    6种方法使MDI父窗体调用子窗体(子窗体同时只能显示一个)

               有一个MDI窗体叫MainForm,多个子窗体,如Form1,Form2…… 要使子窗体同时只能显示一个,

    那么 方法1 dim Form1 as new form1 Form1.showDialog() 此方法一个MDI窗体同时只能显示一个,

    方法2 在每一个子窗体的应用单态设计模式 在每一个子窗体上声明 private sub new() end sub Public Shared NewMe……               MDI窗体调用时 dim form1

    as form1=form1.NewME form1.show() 这种方法每一个子窗体都要应用单态,代码重复多,不好

    方法3 是方法2的改良 先写

    一个ChildForm继承Form 在窗体上声明 private sub new() end sub Public Shared NewMe…… 再把所有的子窗体继承它

    MDI窗体调用时 dim form1 as form1=form1.NewME form1.show() 这种方法很好,代码也少

    方法4 利用MDI窗体的Controls属性 循环检测当是否以存在所需子窗体 存在则 .show .Activate 不存在则new了再.show

    方法5 在MDI窗体上    

    Dim Form1 as form1   
    
     Friend Sub ShowForm1()    
    
     If Form1 Is Nothing OrElse Form1.IsDisposed Then 
    
    Form1 = New Form1                     
    
    Form1.MdiParent = Me 
    
    End If         
    
     Form1.Show()   
    
       Form1.Activate()   
    
    End Sub

    这种方法的缺点,每一个子窗体都要写一个这样的方法

    方法6 利用泛型改良方法5 先写一个

    ChildFormManager类 '''
     

    <summary> 
    
    '' 调用子窗口 '''
    
    </summary> ''' 
    
    <typeparam name="T"></typeparam> ''' <remarks></remarks>
    
    Public Class ChildFormManager(Of T As {Form, New})   
    
      Public Shared Sub show(ByVal myform As T,  ByVal Mdi As Form)  
    
          If myform Is Nothing OrElse myform.IsDisposed Then   
    
       myform = New T        
    
      myform.MdiParent = Mdi       
    
         End If     
    
      myform.Show()    
    
    myform.Activate()    
    
    End Sub End Class

    在MDI窗体中这样调用 dim Form1 as Form1 form1=ChildFormManager(of Form1).show(form1,Me)

    展开全文
  • Vb.net调用子窗体

    千次阅读 热门讨论 2017-03-12 19:26:21
    方法一:  DimNewMDIChild As New ... NewMDIChild.MdiParent = Me ‘设置子窗体的父窗体为本窗体    NewMDIChild.Show() ‘显示子窗体   方法二:  '声明SetParent函数,这是一个API函数 

    方法一:


      DimNewMDIChild As New Form3         ‘实例化子窗体Form3


      NewMDIChild.MdiParent = Me    ‘设置子窗体的父窗体为本窗体

           

      NewMDIChild.Show()   ‘显示子窗体


     

    方法二:


       '声明SetParent函数,这是一个API函数  用来设置子窗体

      

      Declare FunctionSetParent Lib "user32" Alias "SetParent" (ByVal hWndChildAs IntPtr,


     ByVal hWndNewParent As IntPtr) As Long

     

      ‘调用函数创建子窗体

      

      SetParent(Form4.Handle,Me.Handle)


      Form4.Show()






      但是个人感觉第二种方法比较好用。


      因为第一种方法是通过不断实例化一个子窗体实现的,不做判断的话触发一次就会增加


    一个。判断方法自便,这里找到了要少敏师姐的经验:


    http://blog.csdn.net/missysm586/article/details/6311729


      而且还有一点,当子窗体边界超出父窗体时,父窗体会自动出现滚动条






      当移动滚动条后所有子窗体会发生移动,而父窗体控件因为有固定坐标不会发生移动。


    (通过第二种方法获得的子窗体也不会动),很难受。






    展开全文
  • 在MDI编程中,从父窗体调用子窗体,会出现子窗体隶属父窗体。但当我们要从一子窗体调用另一个子窗体,并且,调用过后,这个被子窗体调用出来的子窗体,会出现隶属于父窗体的情况是什么实现的呢? 下面是针对这种...

    MDI编程中,从父窗体调用了子窗体,会出现子窗体隶属父窗体。但当我们要从一子窗体调用另一个子窗体,并且,调用过后,这个被子窗体调用出来的子窗体,会出现隶属于父窗体的情况是什么实现的呢?

    下面是针对这种情况的一个简单实现。

     

    在一个项目中建三个窗体,分别为Form1Form2Form3。其中,Form1设置为父窗体,在Form1上有一个按钮button1,在这个按钮的Click事件中,实现调用Form2。在Form2上也有一个按钮button1, 在这个按钮的Click事件中,实现调用Form3

     

    以下是具体的代码过程,代码中作了关键注释:

    Form1中的代码:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

     

    namespace MdiFormTest

    {

        public partial class Form1 : Form

        {

           //定义一个Form1static变量SForm1

           static public Form1 SForm1 = null;

           public Form1()

           {

               InitializeComponent();

     

               //Form1赋给SForm1

               SForm1 = this;

           }

     

           privatevoid button1_Click(object sender, EventArgs e)

           {

               Form2 form2 = new Form2();

               form2.MdiParent = this;

               form2.Show();

           }

        }

    }

     

    Form2中的代码:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

     

    namespace MdiFormTest

    {

        public partial class Form2 : Form

        {

           public Form2()

           {

               InitializeComponent();

           }

     

           privatevoid button1_Click(object sender, EventArgs e)

           {

               Form3 form3 = new Form3();

               //指明Form3的父窗体是Form1

               form3.MdiParent = Form1.SForm1;

               form3.Show();

           }

        }

    }

     

    以上就是对这个问题的解决。

    展开全文
  • C# 子窗体调用父窗体函数(无参数)
  • C++调用子窗体

    2015-05-10 16:38:00
    不基于MFC的窗口调用程序。支持VC++6.0
  • Q694584 delphi 调用子窗体传值的问题 https://ask.csdn.net/questions/694584 代码解答
  • 简单的Factory 父窗体调用子窗体里的方法 树加载控件
  • 网络上有几种方法,先总结如下: 调用窗体(父):FormFather,被调用窗体):FormSub 方法1: 所有权法 //FormFather: //需要有一个公共的刷新方法 public void Refresh_Method() { //... } //在调用FormSu...
  • 本文主要用到委托,特此记录 需求:在已经打开的子窗体 在show个子窗体出来。同时还把子窗体的操作结果显示在主窗体中。
  • 问题: 主窗体调用子窗体使用的是ShowDialog(),有的子窗体可以正常调用,但是有的子窗体调用后会catch到异常:System.InvalidOperationException: 只能在隐藏窗口上调用 ShowDialog。 解决方法:经过深入分析后...
  • c# 委托,父窗体传值到子窗体调用方法,DEMO,完整代码,visual studio2010
  • 采用线程进行实现:  Thread t = new Thread(new ThreadStart(delegate { Application.Run(new Form1()); }));  t.Start();  this.Dispose(true);
  • 这应该就是窗体调用控件的最简单最好理解的代码了。 C#不像VB.NET,控件要讲究实例化,VB.NET哪里管那么多,拿来直接就用,如果控件的modifier的属性设为Public,更简单,连控件的所属表单都不用加,直接用控件...
  • //调用父窗体方法,当关闭子窗体刷新父窗体  window.parent.window.jBox.close(); //关闭子窗体  } else {  alert("保存失败:"+data.message);  window.parent.page();  window.parent.window...
  • C#子窗体主窗体互相调用方法

    千次阅读 2018-12-18 13:48:35
    主窗体:FormMain 主窗体函数: piblic void TestMain() { MessageBox.Show("主窗体","结果"); } 子窗体:FormChild 子窗体函数: ...主窗体调用子窗体函数: FormChild frm=ne...
  • 有2个窗体调用一个子窗体, 第一个窗体传值给子窗体可以,第二个窗体传值有值的,跟踪到子窗体时值为空。 子窗体是动态创建的。 比如第一个窗体传值: sName := '1'; 子窗体SHOW时显示1;正确。 第二个窗体传值过去...
  • 主要介绍了C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法,涉及C#窗体交互的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 1:在控件中声明委托方法 public delegate void SetData(Object object); public SetData setData; 2:在父窗体中定义方法 private void Form_Load(object sender, EventArgs e) { userCo...
  • C# 怎么子窗体调用父窗体的控件

    千次阅读 2016-08-25 22:00:19
    http://bbs.csdn.net/topics/300078684 控件.Parent.Controls["你要设置控件名"].Text = ">??"; 搞定. 例如: this.TopLevelControl.Controls["statusStrip1"]
  • C#子窗体调用主窗体中事件

    千次阅读 2015-07-16 22:33:11
    很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可。 下面重点介绍前一种,目前...
  • 【父窗体调用子窗体变量或方法】:  首先在父窗体下定义子窗体,如:SubForm subform1=new SubForm();  再将子窗体subform1中需要调用的变量改为全局变量(public),父窗体即可通过代码“subform1.变量名”调用。 ...
  • 第一步:把Form2里面的TextBox控件modifiers属性改为public第二步:在Form1中加代码privateForm2ff;privatevoidForm1_Load(objectsender,EventArgse){ff=newForm2();ff.Show();ff.textBox1.Text=...
  • 今天下午一直在研究子窗体与父窗体之间怎样实现方法调用,研究了整个下午也算有了一点小成,现在将自己积累的一点经验记录下来: 对于子窗体调用父窗体中的方法可以按如下的方法实现: 1、首先在父窗体中按如下...
  • 父窗体是wpf界面 子窗体是winform界面 请问如何子窗体调用父窗体的事件,进行刷新子窗体的数据 因为我用的是页面传值,所以必须子窗体调用父窗体的事件,子窗体才能刷新值
  • 主窗体A 调用子窗体B后, 子窗体B再调用B自身的子窗体C, 在b内 var c = new frmC(); c.Owner = this; c.Show(); 如何可以可以子窗体B的子窗体C可以跟随主窗体A最小化 当Owner、parent窗口最小化时,子...
  • C# MDI导航子窗体 子窗体只运行一次

    热门讨论 2010-07-28 22:55:58
    2、可以使子窗口只运行一次,即C# MDI子窗体只有一个实例。 3、可以定位到某个子窗口,并调用其函数。 这是个简单的例子,不过却是打好了一个框架。 子窗口置底函数是...同一类型的子窗口只打开一个...调用示例....
  • delphi 从外部Dll中调用子窗体. 关于DLL文件 的调用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,148
精华内容 20,059
关键字:

调用子窗体