精华内容
下载资源
问答
  • 主窗体子窗体传递数据,子窗体利用数据显示或根据数据查询等等,子窗体完成之后,可以回传消息给主窗体,可以刷新主窗体和主窗体上显示你需要的子窗体内容。
  • 主窗体和子窗体之间如何相互操作对方的控件主窗体和子窗体之间如何相互操作对方的控件 很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。相比较而言,后面稍微简单一些,...
    主窗体和子窗体之间如何相互操作对方的控件
    主窗体和子窗体之间如何相互操作对方的控件

    很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可。

    下面重点介绍前一种,目前常见的有两种方法,基本上大同小异:

    第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如:

    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

    }

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130591/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/374079/viewspace-130591/

    展开全文
  • Qt窗体透明(主窗体子窗体

    千次阅读 2018-12-05 21:47:22
    一、主窗体子窗体全透明  setWindowOpacity(0.5); setWindowOpacity(0.5);  取值范围为:0.0 - 1.0,默认值为1.0,全透明为0.0,不透明则为1.0。   二、主窗体透明(子窗体不透明) 主窗体采用背景色。 ...

    一、主窗体与子窗体全透明

        setWindowOpacity(0.5);

    setWindowOpacity(0.5);

        取值范围为:0.0 - 1.0,默认值为1.0,全透明为0.0,不透明则为1.0。

     

    二、主窗体透明(子窗体不透明)

    主窗体采用背景色。

    在Qt5.6下:发现要把主窗体设置为无边框才可以生效,否则没有透明效果。

    Qt::WindowFlags flags = this->windowFlags();
    
    flags |= (Qt::FramelessWindowHint);
    
    this->setWindowFlags(flags);
    
    setAttribute(Qt::WA_TranslucentBackground, true);
    
    
    
    void paintEvent(QPaintEvent *event)
    
    {
    
        QPainter painter(this);
    
        //QColor最后一个参数100代表背景的透明度(0~255),越小越透明
        painter.fillRect(this->rect(), QColor(0, 0, 255, 100));      
    
    }

    注意:setStyleSheet("background:red;"); qss这种设置背景方式会遮挡透明效果

    三、子窗体设置透明

    直接设置子窗体透明度无法实现透明效果,方法是其当做图形元素,对该图形元素进行设置透明度效果,

        QGraphicsOpacityEffect *opacityEffect=new QGraphicsOpacityEffect;
    
        ui->LabelAnswerCount->setGraphicsEffect(opacityEffect);
    
        opacityEffect->setOpacity(0.7);

     

    展开全文
  • 一、先将主窗体FrmMain和子窗体FrmUser关联起来。 一、主窗体全部代码 public partial class FrmMain : Form { FrmUser mFrmUser = new FrmUser(); FrmPro mFrmPro = new FrmPro(); private static Fr...

    一、先将主窗体FrmMain和子窗体FrmUser关联起来。

     一、主窗体全部代码

         public partial class FrmMain : Form
        {
            FrmUser mFrmUser = new FrmUser();
            FrmPro mFrmPro = new FrmPro();
            private static FrmMain frmMain;
            public FrmMain()
            {
                InitializeComponent();
                frmMain = this;//初始化主窗体
            }
    
            /// <summary>
            /// 子窗体调用该方法后就可以调用主窗体的ShowMessage(string txt)方法,将信息显示是主窗体的label中
            /// </summary>
            /// <returns></returns>
            public static FrmMain Instance()
            {
                if(frmMain == null)
                {
                    return new FrmMain();
                }
                return frmMain;
            }
    
            /// <summary>
            /// 用户管理按钮的点击事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnUserPage_Click(object sender, EventArgs e)
            {
                pnlMain.Controls.Clear();
                mFrmUser.TopLevel = false;//设置用户窗体为非顶级窗体,否则不能添加到主窗体的panel中
                mFrmUser.Parent = pnlMain;//设置父窗体为主窗体
                mFrmUser.Show();//将用户窗体显示出来
                mFrmUser.StartTimer();//开启用户窗体中的定时器
            }
    
            /// <summary>
            /// 项目按钮的点击事件,。
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnProMng_Click(object sender, EventArgs e)
            {
                pnlMain.Controls.Clear();
                mFrmUser.StopTimer();// 停止用户窗体的计时器
                mFrmPro.TopLevel = false;
                mFrmPro.Parent = pnlMain;
                mFrmPro.Show();
            }
    
    
            /// <summary>
            /// 子窗体信息通过这个方法显示到界面上
            /// </summary>
            /// <param name="txt"></param>
            public void ShowMessage(string txt)
            {
                this.label1.Text = txt;
                mFrmPro.SetText(txt);//将定时器的文本同步到项目窗体的label中
            }
        }

     二、用户窗体代码

        /// <summary>
        /// 用户窗体
        /// </summary>
        public partial class FrmUser : Form
        {
            public FrmUser()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 启动定时器
            /// </summary>
            public void StartTimer()
            {
                timer1.Start();
            }
    
            /// <summary>
            /// 关闭定时器,主窗体调用
            /// </summary>
            /// <returns></returns>
            public bool StopTimer()
            {
                timer1.Stop();
                return true;
            }
    
            int i = 0;
            private void timer1_Tick(object sender, EventArgs e)
            {
                label1.Text = (i++).ToString();
                FrmMain.Instance().ShowMessage((i++).ToString());//将计数器的值显示到主窗体的label中
            }
        }

    三、项目窗体代码

       /// <summary>
        /// 项目窗体
        /// </summary>
        public partial class FrmPro : Form
        {
            public FrmPro()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 主窗体调用该方法显示
            /// </summary>
            /// <param name="tst"></param>
            public void SetText(string tst)
            {
                label1.Text = tst;
            }
        }

     

    效果:

     

    展开全文
  • winform点击某个按钮,主窗体和子窗体都显示,子窗体显示在最上面
  • 最近工作用到了C#开发Form应用程序,其中用到了主窗体和子窗体之间控件的相互调用。查了一些资料,现在根据自己写的一个小示例总结如下。 1.主窗体中调用子窗体控件 在主窗体中调用子窗体的控件很简单,只要在...
     
    
    最近工作用到了C#开发Form应用程序,其中用到了主窗体和子窗体之间控件的相互调用。查了一些资料,现在根据自己写的一个小示例总结如下。
    1.主窗体中调用子窗体控件
    在主窗体中调用子窗体的控件很简单,只要在主窗体中创建子窗体的时候保留所创建的子窗体对象即可。
    2.子窗体中调用主窗体控件
    方法如下:
    (1)   在主窗体类中定义一个静态数据成员,来保存当前主窗体对象,如下:
       public static MainForm pMainWin = null;
    (2)   然后在主窗体构造函数中,给上述静态成员初始化,如下:
           public MainForm()
             {
                InitializeComponent();
                pMainWin = this;//这里是初始化
        }
    (3)   在子窗体中调用主窗体,可以通过如下方式:主窗体类名.pMainWin”,例如:
       this.Text_S3.Text = MainForm.pMainWin.Text_M1.Text;
    this.Text_S4.Text = MainForm.pMainWin.Text_M4.Text;
    3.以上所做的,只是让你能够访问当前主窗体对象或子窗体对象,如果想操作控件,可以直接修改控件的成员访问符,即可以把”private”修改成”public”。当然最好的还是可以用增加公有属性的做法,这样不会破坏类本身的封装。如下:
    public string Text_Box
            {
                get {return Text_S2.Text;}
                set { Text_S2.Text = value; }
            }
    4.现在把一个小示例的代码粘贴如下:
    (1)建立主窗体,添加四个文本框控件:Text_M1,Text_M4,用来主窗体中输入数据传给子窗体;Text_M2,Text_M3,用来显示子窗体中传过来的数据。一个按钮Btn_M1用来调用子窗体。Btn_M1按钮事件中添加代码,现把主窗体代码显示如下:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace MainSubControl
    {
        public partial class MainForm : Form
        {
            //在主窗口类中定义一个静态成员,来保存当前主窗体对象,以便子窗体中调用其控件
            //子窗体调用时,通过"主窗体类名.pMinWin",然后在其构造函数中,给静态成员初始化.
            public static MainForm pMainWin = null;
     
     
            public MainForm()
            {
                InitializeComponent();
                pMainWin = this;
            }
     
            private void Btn_M1_Click(object sender, EventArgs e)
            {
                SubForm SubFormE = new SubForm();
     
                //由于下面要调用到子窗体SubFormE的Text_S1控件,所以需要把Text_S1控件的成员访问符号由private改成public即可.
                //调用子窗体SubFormE的Text_S2控件是通过增加了一个public属性来调用的,不是修改访问修饰符号,当然也可以这么做
                //也可以通过增加public方法来实现.
                if (SubFormE.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    this.Text_M2.Text = SubFormE.Text_S1.Text;
                    this.Text_M3.Text = SubFormE.Text_Box;
                    return;
                }
                return;
            }
     
            private void Btn_MExit_Click(object sender, EventArgs e)
            {
                this.Close();
            }
     
            private void MainForm_Load(object sender, EventArgs e)
            {
     
            }
        }
    }
    (2)建立子窗体,添加四个文本框:Text_S1,Text_S2,用来子窗体输入数据传给主窗体来显示;Text_S3,Text_S4,用来显示主窗体传过来的数据。一个确定按钮Btn_SOK。先把子窗体类代码显示如下:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace MainSubControl
    {
        public partial class SubForm : Form
        {
            //在子窗体中定义一个主窗体类的一个私有成员,来保存当前主窗体对象.
            //为其构造函数增加一个主窗口的参数来初始化,子窗体中调用,用"this.pParentWin"
            //18private MainForm pParentWin = null;
     
     
            public SubForm()
            {
                InitializeComponent();
                //18pParentWin = WinMain;
            }
     
            public string Text_Box
            {
                get {return Text_S2.Text;}
                set { Text_S2.Text = value; }
            }
     
     
            private void SubForm_Load(object sender, EventArgs e)
            {
                this.Text_S3.Text = MainForm.pMainWin.Text_M1.Text;
                //18this.Text_S4.Text = this.pParentWin.Text_M4.Text;
                this.Text_S4.Text = MainForm.pMainWin.Text_M4.Text;
            }
     
          
            private void Btn_SOK_Click(object sender, EventArgs e)
            {
              
            }
          
        }
    }
    呵呵,结束了,希望对大家有帮助。
    展开全文
  • 其实就是把子窗体的FormClosing事件写在主窗体中  private void BtnFeedMaster_Click(object sender, EventArgs e)  {  //Feeder注册  Feeder_Master_Add Feeder_Master_Add = new Feeder_Master_Add
  • 相比较而言,后面稍微简单一些,只要在主窗体创建子窗体的时候,保留所创建子窗体对象即可。下面重点介绍前一种,目前常见的有两种方法,基本上大同小异:第一种,在主窗体类中定义一个静态成员,来保存当前主窗
  • 首先在同一命名空间下添加新建多个窗体,选用一个作为主窗体,其他窗体作为子窗体。 经导师指导,我采用在主窗体加入一个面板,面板中调用三个主窗体的方法,经实践记录如下: 窗体隐藏:窗体隐藏 ...
  • 主窗体创建子窗体的方法

    千次阅读 2010-04-14 11:06:00
    子窗体设为child,none,然后再主窗体中以创建动态窗口的方法显示就可以了 mytest *ptr;//子窗口类 ptr=new mytest(); ptr->Create(IDD_MYTEST_DIALOG, this); CRect test; this->GetClientRect(&test); ...
  • 主窗体和子窗体之间如何相互操作对方的控件document.title="主窗体和子窗体之间如何相互操作对方的控件 - "+document.title很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。...
  • 利用信号槽,通过全局类变量extern sSlot m_gsslot,实现主窗体和子窗体互相传值。而且主窗体和子窗体的头文件不用互相引用。 界面如下:主界面中有定时器,点击主界面按钮,子窗体的信号槽能够输出调试信息,同理...
  • C# Winform 利用线程延时创建子窗体并且可跨线程控制主窗体的控件
  • 相比较而言,后面稍微简单一些,只要在主窗体创建子窗体的时候,保留所创建子窗体对象即可。 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异: 第一种,在主窗体类中定义一个静态成员,来保存当前...
  • C#子窗体主窗体互相调用方法

    千次阅读 2018-12-18 13:48:35
    主窗体:FormMain 主窗体函数: piblic void TestMain() { MessageBox.Show("主窗体","结果"...子窗体:FormChild ...子窗体函数: ...主窗体调用子窗体函数: FormChild frm=ne...
  • private void Button_Click_1(object sender, RoutedEventArgs e) { this.Topmost = true;...主窗体全屏比较容易知道,但是现在子窗体不知道怎么加进主窗体中,只能加page页,页也不知道怎么全屏显示。
  • 主窗体和子窗体之间如何相互操作对方的控件 document.title="主窗体和子窗体之间如何相互操作对方的控件 - "+document.title很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。...
  • 原文地址:...相比较而言,后面稍微简单一些,只要在主窗体创建子窗体的时候,保留所创建子窗体对象即可。 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异:第一种,在主窗体
  • 转:...相比较而言,后面稍微简单一些,只要在主窗体创建子窗体的时候,保留所创建子窗体对象即可。 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异:第一种,在主窗体类中定义一个
  • 主窗体new子窗体主窗体最小化,如何让子窗体不跟着最小化
  • (最近在做一个刷卡的门卫管理系统,需要通过子窗体操作父级MDI窗体,在网上找了一位大侠的文章解决了,先表示下感谢,这里也冒昧地贴出来,希望能更多的人共享)很多人都苦恼于如何在子窗体中操作主窗体上的控件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,185
精华内容 13,274
关键字:

如何创建主窗体和子窗体