`
wang_peng1
  • 浏览: 3944247 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

主窗口子窗口之间的调用

阅读更多
在项目中用到了这个东西,c#基础有点弱,只有百度了 这里引用过来 觉得挺好
http://www.cnblogs.com/freeliver54/archive/2009/02/11/1388173.html
具体内容如下:
本次示例效果如下:
Form1为父窗体(包含textBox1、button1)
Form2为子窗体(包含textBox2、button2)

父窗体给子窗体传值
==================
1.点击Form1的button1 打开Form2
  父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2(this.textBox1.Text);
            frm2.Show();
        }
    }

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(string strTextBox1Text)
        {
            InitializeComponent();
            this.textBox2.Text = strTextBox1Text;
        }
    }

2.点击Form1的button1 打开Form2
  并调用子窗体Form2的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.TextBox2Text = this.textBox1.Text;
            frm2.Show();
        }
    }

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public string TextBox2Text
        {
            set { this.textBox2.Text = value; }
            get { return this.textBox2.Text; }
        }      
    }
 
3.点击Form1的button1 打开Form2
  在Form2_Load调用父窗体Form1的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public string TextBox1Text
        {
            set { this.textBox1.Text = value; }
            get { return this.textBox1.Text;  }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);//或 frm2.ShowDialog(this);

            ////或者
            //Form2 frm2 = new Form2();
            //frm2.Owner = this;
            //frm2.Show();//或 frm2.ShowDialog();
        }
    }
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            Form1 frm1 = (Form1)this.Owner;
            this.textBox2.Text = frm1.TextBox1Text;
        }
    }

子窗体给父窗体传值
==================
4.点击Form1的button1 打开Form2
  再点击Form2的button2
    在button2_Click事件中 通过this.Owner将Form2的textBox2的值设置给Form1的textBox1
    并关闭Form2

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);//或 frm2.ShowDialog(this);

            ////或者
            //Form2 frm2 = new Form2();
            //frm2.Owner = this;
            //frm2.Show();//或 frm2.ShowDialog();
        }
    }

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 frm1 = (Form1)this.Owner;
     //注意 如果textBox1是放在panel1中的 则先找panel1 再找textBox1
            ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
            this.Close();
        }
    }

5.点击Form1的button1 打开Form2
  再点击Form2的button2
    在button2_Click事件中 通过this.Owner及调用父窗体Form1的公开属性或方法
                          将Form2的textBox2的值设置给Form1的textBox1
    并关闭Form2

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public string TextBox1Text
        {
            set { this.textBox1.Text = value; }
            get { return this.textBox1.Text;  }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);//或 frm2.ShowDialog(this);

            ////或者
            //Form2 frm2 = new Form2();
            //frm2.Owner = this;
            //frm2.Show();//或 frm2.ShowDialog();
        }
    }

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 frm1 = (Form1)this.Owner;
            frm1.TextBox1Text = this.textBox2.Text;
            this.Close();
        }
    }


我的使用是: 在form1中
private void button6_Click(object sender, EventArgs e)
        {
            Form2 listViewReatin = new Form2();
            ListView listView1 = listViewReatin.listView1;
            listViewReatin.Owner = this;
            readTxt(@"\Storage Card\address.txt", listView1);
            listViewReatin.Show();

        }
在form2中
private void button4_Click(object sender, EventArgs e)
        {
            int i = listView1.SelectedIndices[0];
            string s = listView1.Items[i].SubItems[1].Text;
          //  MessageBox.Show(s);
            //实现子传父类 注意关闭自己
            Form1 f1 = (Form1)this.Owner;
            f1.textBox1.Text = s;
            f1.webBrowser1.Navigate(new Uri(s));
            this.Close();
           
        }
分享到:
评论

相关推荐

    Delphi工具主程序调用子窗口(多窗口)

    主程序调用子窗口(多窗口)是一个常见的设计模式,它有助于实现软件的模块化和功能拆分,提高代码的可维护性和复用性。本实例通过创建DLL动态链接库来演示如何在主程序中调用子窗口。 首先,让我们了解DLL的基本...

    pyside2调用子窗口

    本篇将详细讲解如何在PySide2中调用子窗口。 首先,我们需要了解窗口系统的基本概念。在PySide2中,`QMainWindow`是主窗口类,而`QWidget`则可以作为子窗口或对话框。当我们想要从主窗口打开一个新的窗口时,通常会...

    在子窗口中调用父窗口的成员函数的实例

    在子窗口中调用父窗口的成员函数的方法 1、用FindWindow("类名(可以是派生类)","窗口标题")或GetParent(),二者均能返回父窗口句柄,并能直接使用其成员函数。但是此法只能调用CWnd类里的成员函数,而不能调用自己...

    C#Winform多个子窗口与主窗口之间任意切换不闪烁源码

    "C# Winform多个子窗口与主窗口之间任意切换不闪烁源码"示例正是解决此类需求的一个实践案例。以下是对这个主题的详细讲解: 首先,让我们理解`Winform`是什么。`Winform`是.NET框架中用于构建桌面应用程序的用户...

    C#中父窗口和子窗口之间实现控件互操作

    父窗口通常作为主界面,而子窗口通常用于显示详细信息或进行特定操作。 要实现父窗口和子窗口之间的控件互操作,我们需要以下步骤: 1. 创建父窗口和子窗口: 在C#中,我们可以使用`System.Windows.Forms.Form`类...

    Python-Pyside6主窗口调用子窗口并互相传递参数

    本主题聚焦于如何在主窗口与子窗口之间进行通信,包括调用子窗口以及在它们之间传递参数。这在创建复杂的多窗口应用程序时非常关键,因为数据和事件通常需要在不同窗口之间流动。 首先,了解信号和槽(Signals and ...

    Qt建立主窗口界面控制按钮调用两个独立ui界面

    在Qt开发过程中,创建用户界面(UI)是至关重要的一步,尤其对于初学者而言,理解和掌握如何通过主窗口界面调用多个独立的UI文件是一项基础但关键的技能。本资源提供的源码示例展示了如何在主窗口中设置按钮,通过...

    模态与非模态子窗口调用主窗口控件学习

    学习模态和非模态子窗口调用主窗口控件时,需要注意以下几点: 1. **通信机制**:模态和非模态子窗口都需要与主窗口进行数据交换。模态窗口通常通过返回值或设置对话框成员变量来传递信息,而非模态窗口则可能需要...

    html 模态窗口子窗体调用父窗体的任何函数

    通过这样的方式,我们可以在HTML模态子窗口中调用父窗口的任何已定义的函数,从而实现两者之间的互动。这种功能在构建复杂交互的Web应用时非常有用,可以提高用户体验,使用户感觉是在一个统一的界面上操作。 在...

    minigui主窗口和子窗口示例

    首先,创建主窗口是通过调用`CreateWindowEx`函数实现的,这个函数需要指定窗口类名、窗口标题、窗口样式、初始位置和大小等参数。窗口类名通常是预先定义好的,例如`"STATIC"`表示一个不可编辑的文本框,而窗口标题...

    Qt--子窗口向父窗口传值

    - 在Qt中,`QMainWindow`通常作为主窗口,而其他如`QWidget`或自定义窗口类可以作为子窗口或对话框。 - 子窗口通常是模态或非模态的,它们可以在主窗口之上弹出,并在完成任务后关闭。 3. **实现步骤**: - **...

    Python3.x+Pyqt5动态加载子窗口,PyQt5主窗口动态加载Widget实例代码

    本主题聚焦于如何在Python3.x版本中利用PyQt5实现动态加载子窗口到主窗口,特别是通过QTreeWidget作为导航栏,并利用QSplitter进行窗口分割。此外,还会涉及如何使用右键菜单以及实现界面与业务逻辑的分离。 首先,...

    C#中子窗体调用主窗口控件的简单实例

    这应该就是窗体间调用控件的最简单最好理解的代码了。 C#不像VB.NET,控件要讲究实例化,VB.NET哪里管那么多,拿来直接就用,如果控件的modifier的属性设为Public,更简单,连控件的所属表单都不用加,直接用控件...

    Qt 子窗口父窗口切换,窗口间传值

    在Qt中,QMainWindow通常作为主窗口,可以包含多个子窗口或对话框,如QDialog、QWidget或QStackedWidget等。这些子窗口可以通过继承自QWidget的类来创建,并通过调用show()方法显示。 子窗口与父窗口的切换可通过...

    c#利用委托来实现关闭子窗口通知父窗口执行方法

    当子窗口关闭时,`MyFormClosed` 方法会被调用,进而通过 `UpdateTextBox` 委托触发 `Method1` 和 `Method2` 方法的执行。这种设计模式允许子窗口在关闭时通知父窗口执行特定的动作。 #### 总结 通过这种方式,...

    Qt嵌入子Qt程序窗口到当前程序

    6. **通信与事件处理**:为了使子窗口和主窗口之间能够交互,可以使用信号和槽机制。子窗口发出信号,主窗口通过连接这些信号并定义相应的槽函数来响应。 7. **测试与调试**:确保在VS+Qt环境下编译并运行项目,...

    QT之子窗口控件使用

    4. 处理子窗口事件:可能需要重写某些子窗口的信号槽,例如`closed`信号,以便在子窗口关闭时执行清理或更新主窗口状态的操作。 5. 考虑窗口管理:考虑如何管理多个子窗口,如堆叠顺序、可见性、记忆用户偏好等。 ...

    C#父窗口子窗口示例

    在C#编程中,"父窗口子窗口示例"通常是指在Windows Forms应用程序中创建一个主窗口(父窗口)并在其内部嵌套一个或多个子窗口。这种设计模式广泛应用于多文档界面(MDI,Multiple Document Interface)或者对话框式...

    QT父子窗口相互传值

    在Qt编程中,窗口间的通信是常见的需求,无论是主窗口(MainWindow)与子窗口(ChildWindow)之间的数据交互,还是不同子窗口之间的信息传递。"QT父子窗口相互传值"这个主题,主要涉及Qt框架中如何有效地实现这种...

    对话框之间的相互调用

    本主题将深入探讨“对话框之间的相互调用”这一关键知识点,包括主对话框(Main Dialog)如何调用子对话框(Child Dialog)以及子对话框如何反向调用主对话框。 一、主对话框调用子对话框 1. **创建子对话框资源**...

Global site tag (gtag.js) - Google Analytics