`
coconut_zhang
  • 浏览: 543797 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

winform+c#之窗体之间的传值

阅读更多

窗体传值可以分为两类。
1、主窗体往子窗体传值
有两种方法,一种是在子窗体提供重载构造函数,利用重载构造函数传递值,适用于传值数量比较少;第二种是,在子窗体中定义一个主窗体对象,然后就可以接收到主窗体的属性值了,适用于传值数量大。
主窗体代码如下:  public partial class frmParent : Form
    {
        private string strValueA = "";
        public string StrValueA
        {
            get
            {
                return this.strValueA;
            }
            set { this.strValueA = value; }
        }
        public frmParent()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.strValueA = textBox1.Text;
            frmChild frmchild = new frmChild();
            frmchild.Owner = this;
            frmchild.ShowDialog();
            frmchild.Dispose();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            frmChild frmchild = new frmChild(this.textBox1.Text);
            string returnValue = "";
            if (frmchild.ShowDialog() == DialogResult.OK)
            {
                returnValue = frmchild.Str;
                this.textBox1.Text = returnValue;
            }
        }
    }子窗体代码如下:
public partial class frmChild : Form
    {
        private string str;
        public string Str
        {
            get { return this.str; }
            set { this.str = value; }
        }
        private frmParent frmparent;

        public frmChild()
        {
            InitializeComponent();
        }
        public frmChild(string str)
        {
            this.str = str;
            InitializeComponent();
            this.textBox1.Text = str;
        }
        private void frmChild_Load(object sender, EventArgs e)
        {
            frmparent = (frmParent)this.Owner;
            //this.textBox1.Text = frmparent.StrValueA;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //frmparent = (frmParent)this.Owner;
            this.Str = this.textBox1.Text;
            this.DialogResult = DialogResult.OK;
            this.Close();
           
        }
    }

2、从子窗体返回值到主窗体中
利用了子窗体的属性保存子窗体的值,在主窗体中可以访问到子窗体的属性
主窗体代码如下:  public partial class frmParent : Form
    {
        private string strValueA = "";
        public string StrValueA
        {
            get
            {
                return this.strValueA;
            }
            set { this.strValueA = value; }
        }
        public frmParent()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            frmChild frmchild = new frmChild(this.textBox1.Text);
            string returnValue = "";
            if (frmchild.ShowDialog() == DialogResult.OK)
            {
                returnValue = frmchild.Str;
                this.textBox1.Text = returnValue;
            }
        }
    }子窗体代码如下:
public partial class frmChild : Form
    {
        private string str;
        public string Str
        {
            get { return this.str; }
            set { this.str = value; }
        }
        private frmParent frmparent;

        public frmChild()
        {
            InitializeComponent();
        }
         private void frmChild_Load(object sender, EventArgs e)
        {
            frmparent = (frmParent)this.Owner;
            //this.textBox1.Text = frmparent.StrValueA;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //frmparent = (frmParent)this.Owner;
            this.Str = this.textBox1.Text;
            this.DialogResult = DialogResult.OK;
            this.Close();
           
        }
    }

 

3.利用委托和事件

public partial class Form1 : Form
{
private void GetReturnValue(string text)
{
textBox1.Text=text;
}

public Form1()
{
InitializeComponent();
}

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

public partial class Form2 : Form
{
public delegate void returnValue(string text);

public returnValue ReturnValue;

public Form2()
{
InitializeComponent();
}

public Form2(string text)
: this()
{
textBox1.Text=text;
}

private void button1_Click(object sender, EventArgs e)
{
if (ReturnValue != null)
{
ReturnValue(textBox1.Text);
}
Close();
}
}

分享到:
评论

相关推荐

    c# WinForm 窗体之间传值的几种方式(小结)

    c# WinForm 窗体之间传值的几种方式小结 在WinForm开发中,窗体之间传值是一种常见的需求。今天,我们将介绍WinForm 窗体之间传值的几种方式,帮助开发者更好地解决这个问题。 方式一:使用公共静态变量传值 在这...

    C# winform窗体间传值(使用委托或事件)

    C#winform窗体间传值,三种方法示例,注释详细。使用方法:使用vs2013打开编译运行即可; 工程中总共介绍了三种方法: ###方法1:通过保存对象的引用调用其方法实现对子窗体的控制; ###方法2:通过委托,在子窗体...

    winform利用窗体属性实现窗体之间传值.rar

    标题“winform利用窗体属性实现窗体之间传值”所指的知识点,主要是关于如何通过设置和访问窗体的公共属性来实现在不同窗体间的数据传递。这种技术尤其适用于简单的值传递场景,下面我们将详细探讨这一方法。 首先...

    C# winform 跨窗体传值

    标题“C# winform 跨窗体传值”所涉及的核心概念就是如何在多个WinForm窗口之间有效地传输信息。 传统的做法是通过全局变量来实现跨窗体的通信,但这往往会导致代码的耦合度增加,不易维护和扩展。因此,更推荐使用...

    winform中可使用的委托事件,窗体之间可以传值

    在Windows Forms(Winform)应用开发中,通过委托和事件,我们可以让不同的窗体之间进行数据传递,使得程序的模块化设计更加灵活。下面我们将深入探讨这两个概念以及如何在Winform中使用它们来实现窗体间的传值。 1...

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

    以上就是在C#中使用`ShowModalDialog`实现父子窗体之间全传值的常见方法。实际开发中,你可以根据具体需求选择合适的方式。在这个案例中,可能涉及到了其中的一种或多种技术,通过`OpenForm`这个文件来实现具体的...

    C#Winform窗体间传值的各种情况汇总

    本文将深入探讨C# Winform窗体间传值的各种情况。 首先,我们可以通过构造函数来传递数据。当创建新窗体实例时,可以将需要传递的数据作为参数传入构造函数。例如,如果我们有一个主窗体(Form1)和一个子窗体...

    C# WinForm窗体传值

    C#窗体间传值代码,几种简单的传值方法。

    C# Winform 窗体传值及接收返回值

    在C# Winform应用程序开发中,常常需要在不同的窗体之间传递数据,以便实现各功能模块之间的交互。这里我们将详细探讨两种主要的传值方法:通过构造函数传值和通过属性传值。 首先,我们来看**通过构造函数传值**的...

    WinForm 窗体之间传值

    以上就是WinForm窗体之间传值的常见方法。实际应用中,应根据具体需求选择最适合的方式。在处理过程中,注意数据安全和同步问题,避免因多线程操作导致的数据不一致。同时,尽量保持代码的简洁和可维护性,以便于...

    C# WinForm通过全局变量实现不同窗体之间传值的解决方案的源码.rar

    C# WinForm通过全局变量实现不同窗体之间传值的解决方案的源码

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

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

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

    在C# WinForm应用开发中,经常需要在多个窗体之间进行数据交互,以便实现信息的传递和更新。本文将详细讲解如何在不同窗体之间有效地传递数据,并提供实际操作的示例。 首先,理解窗体(Form)是WinForm应用程序的...

    WinForm窗体间传值\(C#)

    WinForm窗体间传值\(C#)

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

    ### 子窗体向父窗体传值 为了从子窗体向父窗体传递数据,我们可以利用子窗体的公共属性。在上述示例中,子窗体`Phone`定义了一个名为`PhoneNumber`的属性,允许父窗体在对话框关闭后读取输入的电话号码。这里的关键...

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

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

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

    ### Winform窗体之间传值的几种方法 在Windows Forms应用程序开发中,窗体之间的数据交互是常见且重要的环节。本文将详细介绍几种实现Winform窗体间数据传递的方法,并通过具体的示例帮助初学者理解每种方法的工作...

    c# winform 窗体间委托事件传值

    在C# WinForm应用开发中,常常需要在不同的窗体之间传递数据,以便实现各功能间的交互。在传统的做法中,我们可能通过属性或者构造函数直接传递数据,但这种方式可能会导致代码耦合度过高,不易维护。为了降低耦合度...

    winform跨窗体传值

    在Windows Forms(Winform)应用程序开发中,"跨窗体传值"是一个常见的需求,它涉及到在多个窗体之间共享和传递数据。当你在设计一个包含多个交互窗口的应用时,可能会遇到从一个窗体(Form)传递信息到另一个窗体的...

Global site tag (gtag.js) - Google Analytics