转: 主窗体和子窗体之间如何相互操作对方的控件

转载 2007年09月30日 10:22:00

 转:http://blog.csdn.net/knight94/archive/2006/03/18/628285.aspx

很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可。
 
下面重点介绍前一种,目前常见的有两种方法,基本上大同小异:
第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如:
        public static yourMainWindow pCurrentWin = null;
 
       然后在主窗体构造函数中,给静态成员初始化,如下:
            pCurrentWin = this;
 
       那么在子窗体中调用父窗体,可以通过“主窗体类名. pCurrentWin”来操作当前的主窗体。
 
       第二种,是在子窗体中定义一个私有成员,来保存当前主窗体对象,例如:
        private yourMainWindow pParentWin = null;
      
       然后在子窗体构造函数中,加一参数,如下:
        public yourChildWindow( yourMainWindow WinMain )
        {
            pParentWin = WinMain;
            //Other code
}
      
       在主窗体创建子窗体的时候,要把this作为参数来构造子窗体,这样在子窗体中调用父窗体,可以直接用“this.pParentWin”就可以了
 
       不过以上所作的,只是让你能够访问当前主窗体对象,那么如何操作控件,很多人直接修改控件的成员访问符,即把“private”改为“public”,我觉得这样破坏了本身类的封装,所以我比较喜欢的做法是增加公有属性或方法来供调用,例如:
        public string ButtonText
        {
            get{ return btn.Text;}
            set{ btn.Text = value;}
        }
 
        public void Button_Click()
        {
            this.btnDConvert.PerformClick();//Execute button click
        }
      
      



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=628285

 

C#从一个类中调用控制主窗体的控件

方法一: 新建类,和构造函数 ,Form form1为传进来的参数 class ConnectionDeal { public ConnectionDeal(Form...
  • ya24241
  • ya24241
  • 2014年12月12日 18:09
  • 1581

C# Winform 左侧菜单右边显示、子窗体显示在主窗体(子窗体当控件添加到Panel)

http://blog.csdn.net/xsfqh/article/details/43058753 Winform 也可以像网站一样左侧显示菜单右边显示点击菜单的子窗体(网页),不过子窗...
  • leeo1010
  • leeo1010
  • 2017年03月02日 15:19
  • 850

C# Winform MDI窗体,父窗体控件覆盖子窗体的解决办法

问题:MDI窗体中,父窗体控件会覆盖子窗体,网上很多解决方案表面上解决了问题,但失去了MDI窗体的基本特性,并不实用。比较赞成使用子窗体“代替”父窗体控件的方案。思路:不将控件放置在父窗体上,而是放在...
  • lj22377
  • lj22377
  • 2015年09月14日 15:37
  • 2221

winform程序两个窗体间同步数据(三):建立父窗口与子窗口的父子关系(不使用线程)

一 问题: 1 可不可以不使用线程?  可以。需要建立父窗口和子窗口之间的父子关系。 2 如何建立父子关系? 在子窗体中增加一个类型为父窗口的属性(即ChildFrm类中设置 publ...
  • nocomment_84
  • nocomment_84
  • 2017年02月03日 12:29
  • 902

【C#】winform子窗体与父窗体传值,子窗体与子窗体传值

【1】子窗体与父窗体传值,见:http://www.cnblogs.com/xugang/archive/2010/06/29/1767465.html 【2】子窗体与子窗体传值: 前提:Form1座...
  • catshitone
  • catshitone
  • 2015年11月01日 15:30
  • 743

access窗体设计:创建子窗体

如果要将子窗体链接到主窗体,执行该过程前应确保已与基础记录源建立关联。 当窗体显示在数据透视表视图或数据透视图视图中时,不能向其中添加子窗体。 同时创建窗体与子窗体 在“数据...
  • xcntime
  • xcntime
  • 2014年03月20日 19:42
  • 3241

c#如何将子窗体显示到父窗体的容器(panel)控件中

如何将一个窗体显示到一个容器控件中,刚开始想的比较简单,用窗体容器控件添加一般控件的方法,试了一试,代码如下: Form2 frm = new Form2(); ...
  • u011555996
  • u011555996
  • 2017年02月10日 11:24
  • 3172

【C#】C#实现嵌入式窗体(弹出的子窗体在父窗体内)

最近有些时间,就把上半年做的东西整理了一下。   C#搭配SQL Server使用,是我们在学习数据库的时候比较好的工具。       由于换了一台电脑,以前的数据库也没有备份,所以现在无法运行。...
  • qq_32353771
  • qq_32353771
  • 2016年11月15日 21:20
  • 2132

c# 【委托】子窗体调用父窗体控件实例

原文地址:http://blog.csdn.net/chazikai24/article/details/5855254 下述代码,实现效果为:运行程序,点击form1的button1,弹出form...
  • lab2013
  • lab2013
  • 2013年03月08日 09:32
  • 990

【C#】MDI窗体中,将子窗体置于父窗体控件之上的方法

问题 这几天在优化程序的时候发现了一个问题,就是在MDI窗体中的子窗体被激活显示出来之后,总是被主窗体中的控件遮挡(各种控件)。解决的方法也试了很多但是都不是很满意,由于C#的WINFROM窗体没...
  • SugaryoTT
  • SugaryoTT
  • 2016年05月08日 16:03
  • 2215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:转: 主窗体和子窗体之间如何相互操作对方的控件
举报原因:
原因补充:

(最多只允许输入30个字)