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

C# WinForm 父窗体 子窗体 传值

 
阅读更多

本次示例效果如下:
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();
}
}

分享到:
评论

相关推荐

    C#(Winfrom)窗体传值问题(子窗体回传值给父窗体).

    子窗体回传值给父窗体 C#(Winfrom)窗体传值问题(子窗体回传值给父窗体).txt

    c# 委托、子窗体往父窗体传值,DEMO,完整源码

    在这个DEMO中,我们将深入探讨如何使用委托以及如何在子窗体与父窗体之间传递数据。 首先,让我们来解释什么是委托。委托在C#中是一种类型,它代表了方法的签名。这意味着当你定义一个委托时,你实际上是在定义一个...

    C#,winform,ShowDialog,子窗体向父窗体传值

    在C# WinForms应用开发中,子窗体与父窗体之间的数据传递是一个常见的需求,尤其是在需要用户输入或选择特定信息的场景下。通过`ShowDialog`方法,我们可以实现一个模态对话框,该对话框在关闭前会阻止程序的其他...

    C#实现父子窗体全传值案例

    这里的`childForm`是要显示的子窗体,`parentForm`是父窗体,`result`是用户在子窗体上操作的结果。`DialogResult`枚举值可以用来判断用户是如何关闭子窗体的(如点击“确定”、“取消”等按钮)。 接下来,我们...

    基于C#的WinForm窗体传值方法探讨.pdf

    ### 基于C#的WinForm窗体传值方法探讨 #### 一、引言 随着.NET平台的发展,C#已成为主流编程语言之一,在Windows应用程序开发领域内扮演着重要角色。在C# WinForm应用开发中,窗体之间的数据传递是一项基本且重要...

    C#中WinForm子窗体如何向父窗体传参

    ### C#中WinForm子窗体如何向父窗体传参 在C#的Windows Forms应用程序中,子窗体向父窗体传递参数是一个常见的需求。这种交互方式可以帮助实现复杂的功能,比如根据用户的选择更新主界面的信息等。下面将详细介绍...

    C#_winform_多个窗体之间相互传递数据操作

    这会创建一个模态对话框,用户必须关闭子窗体才能继续操作父窗体。 - **使用Show()**:如果不希望阻止父窗体,可以使用`Show()`方法。这将创建一个非模态窗体,允许用户在两个窗体间切换。 4. **数据刷新**:在...

    WinForm 窗体之间传值

    2. **从子窗体到父窗体**:子窗体通常通过事件或属性来向父窗体传递数据。例如,子窗体可以定义一个自定义事件,当用户在子窗体上进行操作后触发该事件,并在事件处理程序中传递数据。或者,子窗体可以设置一个公共...

    winform c#中子窗体关闭刷新父窗体的实例

    总结一下,这个例子展示了在Winform C#应用程序中如何通过子窗体的关闭事件来刷新父窗体中的数据显示。关键是利用`DialogResult`属性传递信息,以及在适当的时机重新绑定数据。这种机制在多窗口交互的应用中非常常见...

    C#实现子窗体改变主窗体同时改变功能

    在C#编程中,"子窗体改变主窗体同时改变功能"是一个常见的需求,尤其在多窗口交互的桌面应用程序中。这个功能涉及到事件处理、委托和同步的概念。以下是关于这些知识点的详细解释: 1. **事件处理**: 在C#中,...

    winform窗体之间传值的几种方法

    自身传递法是另一种简单实用的数据传递方式,它通过构造函数传递父窗体的实例到子窗体中。 **示例代码:** - **父窗体(Form1):** ```csharp public partial class Form1 : Form { public void Refresh_...

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

    ### C#中利用委托实现子窗口关闭时通知父窗口执行特定方法 在C#中,事件和委托是非常重要的概念,特别是在处理用户界面交互时。本文将详细介绍如何利用委托(Delegate)来实现在关闭子窗口时通知父窗口执行特定的...

    WinForm传值程序不调用构造函数

    看了些窗体传值的例题都是用构造函数 可我觉得构造函数想实现即时传值好象不行 呵呵,我总是理解不了构造函数(菜吧) 我所以就想了这样个办法来实现传值 using System; using System.Collections.Generic; using ...

    C#窗体传值代码方法

    假设有下面的一个场景:一个主窗体和一个子窗体,点击主窗体上面的按钮给子窗体传值,并在子窗体上面显示出来,一般会有如下几种方式实现。 二、公共属性 我们可以在子窗体里面定义一个公共的属性,然后在父窗体里面...

    winform委托窗口传值实例

    在这个“winform委托窗口传值实例”中,我们将深入探讨如何在Winform应用的主窗体和子窗体之间通过委托来传递数据。委托是C#中的一个强大特性,它允许我们传递方法作为参数,实现回调或事件处理。在窗体间通信中,...

    C#MDI多窗体及选项卡程序

    在C#中,我们通常使用`Form`类的`IsMdiContainer`属性设置主窗体为MDI容器,然后创建`Form`的子类作为MDI子窗体。创建MDI子窗体时,我们需要设置其`MdiParent`属性为主窗体,这样它就会被包含在MDI容器中。 例如,...

    ShowDialog()的超简单的关闭用法

    - 如果你需要在子窗体中访问父窗体,可以使用`Owner`属性,如`((Form1)this.Owner)`。 - 要避免无限循环,确保在正确的地方调用`ShowDialog()`,比如不在子窗体的`Load`事件中再次打开自身。 - 使用`Show()`而不是`...

    窗台间传值

    【窗台间传值】是指在C#编程中,如何在不同的Windows Forms(Winform)窗口之间传递数据。这是在开发多窗口应用时常见的需求,目的是实现...此外,理解不同窗体对象的关系(如父窗体与子窗体)也是正确传递值的关键。

Global site tag (gtag.js) - Google Analytics