精华内容
下载资源
问答
  • 本文中以主窗体为frmMain,子窗体为frmGroup ,两窗体之间的传值来做示例。 方式一: 使用公共静态变量传值窗体frmMain中代码 public partial class frmMain : Form { //声明工位ID 为公共静态变量 public ...
  • C#winform窗体间传值,三种方法示例,注释详细。使用方法:使用vs2013打开编译运行即可; 工程中总共介绍了三种方法: ###方法1:通过保存对象的引用调用其方法实现对子窗体的控制; ###方法2:通过委托,在子窗体...
  • C# 窗体间传值.docx

    2019-10-15 16:10:55
    C#action和func的使用(泛型委托,是C#内置的委托类型) 以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我...
  • C#窗体间传值

    2014-04-29 22:33:53
    利用构造函数和公共属性,两种方法实现窗体间传值,用VS2005编写,语句简单易懂。
  • C# 窗体间传值

    2018-04-16 16:58:17
    C# 窗体间传值 窗体控件都是私有变量,不能直接进行传值。 本文主要介绍两种窗体间传值的方法,通过事件或委托进行传值。 通过事件传值 目标 在父类窗体和子类窗体中定义一个TextBox和按钮; 在父类窗体中...

    C# 窗体间传值

    窗体控件都是私有变量,不能直接进行传值。
    本文主要介绍两种窗体间传值的方法,通过事件或委托进行传值。

    通过事件传值

    目标

    在父类窗体和子类窗体中定义一个TextBox和按钮;
    在父类窗体中点击按钮将字符串输出到子类窗体;
    在子类窗体中点击按钮将字符串输出到父类类窗体;
    窗口传值

    定义一个消息类

    该消息类继承EventArgs类

    public class FrmEventArgs:EventArgs
    {
        string _myString;
        public string MyString
        {
            get { return _myString; }
            set { _myString = value; }
        }
    }

    父类窗口代码编写

    public event EventHandler TranValue;//定义事件
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2();
        string Value = textBox1.Text.ToString();
        this.TranValue += new EventHandler(frm.ChangeValue);//绑定事件,传出值
        frm.TranValue += new EventHandler(ChangeValue);//绑定事件,传回值
        FrmEventArgs FrmArgs = new FrmEventArgs();//定义消息
        if (textBox1.Text != null)
        {
            FrmArgs.MyString = textBox1.Text;
            TranValue(this, FrmArgs);//事件发生
        }
        frm.ShowDialog();
    }
    //传回消息时,处理函数
    public void ChangeValue(object sender, EventArgs e)
    {
        FrmEventArgs args = e as FrmEventArgs;
        textBox1.Text = args.MyString;
    }

    子类代码

    public event EventHandler TranValue;//定义事件
    private void button1_Click(object sender, EventArgs e)
    {
        FrmEventArgs FrmArgs = new FrmEventArgs();//定义消息
        if (textBox1.Text != null)
        {
            FrmArgs.MyString = textBox1.Text;
            TranValue(this, FrmArgs);//消息发生
        }
        this.Close();
    }
    //事件处理函数
    public void ChangeValue(object sender, EventArgs e)
    {
        FrmEventArgs args = e as FrmEventArgs;
        textBox1.Text = args.MyString;
    }

    通过委托传值

    实际上就是将父类窗体的函数地址给子类窗体,子类窗体要传回值时,通过地址找到父类函数。

    父类代码

    private void button1_Click(object sender, EventArgs e)
    {
        if(textBox1.Text != null)
        {
            Form2 frm = new Form2();
            frm.ChangeValue(textBox1.Text, ChangeValue);
            frm.ShowDialog();
        }
    }
    public void ChangeValue(string str)
    {
        textBox1.Text = str;
    }

    子类代码

    public delegate void MyDelegate(string str);
    public MyDelegate myDelegate;
    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text != null)
        {
            myDelegate(textBox1.Text);
            this.Close();
        }
    }
    public void ChangeValue(string str, MyDelegate myDele)
    {
        textBox1.Text = str;
        myDelegate = myDele;
    }

    结束

    展开全文
  • Form1 中 (父窗口: public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button btnOpen; public System.Windows.Forms.TextBox txtContent; //注意是 public . . [STAThread] static ...
  • [C# 窗体间传值_共6种方法_低中高级实现方法_SongQz编著,窗体间传值是必然遇到的问题,希望我总结的这6种方法,能帮助到大家,代码100%保证完美实现; 代码最低用VS2010版打开。
  • 第一种方法: 创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用。...在窗体Form2中 int value1; string value2; public Form2 ( int value1 ,

    第一种方法:
    创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用。(这种方法传递是双向的)

    第二种方法:
    1.在Form1里定义

    public string Name = “*****”

    1. 在Form2里创建Form1对象,

    Form1 f = new Form1();

    然后就可以通过f.Name取值了

    第三种方法:用构造函数
    在窗体Form2中

    int value1;
    string value2;

    public Form2 ( int value1 , string value2 )
    {
    InitializeComponent ( );

    this.value1 = value1; 
    this.value2 = value2; 
    

    }

    在窗体Form1中这样调用

    new Form2 ( 111 , “222” ).Show ( );

    这样就把111,“222”,这2个值传送给了Form2 d
    但是这样的传值是单向的

    第四种方法:通过窗体的公有属性值(特点:实现简单)
    举例“在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值

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

    在窗体Form1中这样调用

    Form2 f2 = new Form2 ( );
    f2.Form2Value = “Ok”; //给Form2的textBox1赋值Ok
    f2.ShowDialog ( );

    第五种方法:通过窗体的公有属性值和Owner属性(特点:实现简单,灵活)

    在窗体Form1中

    public int Form1Value = 1;

    Form2 f2 = new Form2 ( );
    f2.ShowDialog ( this ); //把Form1作为Form2的所有者传递给Form2

    在窗体Form2中

    //Form2的所有者是Form1
    Form1 f1 = ( Form1 ) this.Owner;
    //取到Form1的值是1
    MessageBox.Show ( f1.Form1Value .ToString ( ) );
    //给Form1的Form1Value赋值222
    f1.Form1Value = 222;

    第六种方法:通过窗体的公有属性值和Application.OpenForms属性(感觉用的比较少)
    说明:Application.OpenForms属性:获取属于应用程序的打开窗体的集合。(此属性在 .NET Framework2.0版中)
    实现代码如下:
    在窗体Form1中

    public int Form1Value = 1;

    Form2 f2 = new Form2 ( );
    f2.Show ( );

    在窗体Form2中

    string formName = “Form1”;
    Form fr = Application.OpenForms [ formName ];

    if ( fr != null )
    {
    Form1 f1 = ( Form1 ) fr;
    //取到Form1的值是1
    MessageBox.Show ( f1.Form1Value.ToString ( ) );
    //给Form1的Form1Value赋值222
    f1.Form1Value = 222;
    }

    第七种方法:通过事件
    在窗体Form2中定义公有属性Form2Value,获取和设置textBox1的文本值
    并且还定义一个accept事件

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

    public event EventHandler accept;

    private void button1_Click ( object sender , EventArgs e )
    {
    if ( accept != null )
    {
    accept ( this , EventArgs.Empty ); //当窗体触发事件,传递自身引用
    }
    }

    在窗体Form1中

    Form2 f2 = new Form2 ( );
    f2.accept += new EventHandler ( f2_accept );
    f2.Show ( );

    void f2_accept ( object sender , EventArgs e )
    {
    //事件的接收者通过一个简单的类型转换得到Form2的引用
    Form2 f2 = (Form2) sender;
    //接收到Form2的textBox1.Text
    this.textBox1.Text = f2.Form2Value;
    }

    展开全文
  • 首先创建一个父窗体form1,拥有一下控件:textBox1,button1; 再创建一个子窗体form2,拥有控件:textBox2,button2; (首先描述一下整个过程:当点击form1的button1时,打开form2窗口,然后在textBox2里面输入任意值...

    转载自:https://www.cnblogs.com/xuhuan/articles/1418705.html

    首先创建一个父窗体form1,拥有一下控件:textBox1,button1;

    再创建一个子窗体form2,拥有控件:textBox2,button2;

    (首先描述一下整个过程:当点击form1的button1时,打开form2窗口,然后在textBox2里面输入任意值,当点击button2时,将textBox2的值传给textBox1,即实现窗体间传值)

     

    第一种方法:

    在button1的单击事件中写入如下代码:

    form2 f2 = new form2();

    f2.ShowDialog(this);

     

    在button2的单击事件中写入如下代码:

    form1 f1 = (form1)this.owner;

    f1.textBox1.text =this.textBox2.text;

    运行即可实现传值。

     

     

    第二种方法:

    在button1的单击事件中写入如下代码:

    form2 f2 = new form2(this);

    f2.ShowDialog();

     

    在窗体form2的窗体类中声明变量,并改写初始化构造函数如下:

    form1 form1;

    public form2(form1 f1)

    {

    InitializeComponent();

    form1 = f1;

    }

     

    在button1的点击事件中写入如下代码:

    form1.textBox1.text = this.textBox2.text;

    运行即可实现传值。

     

    注:textbox1的Modifiers(控件的可见性级别,即修饰符)应为:public ,internal,protected中之一,不能为private(私有)。

    展开全文
  • C#窗体间传值的几种方式

    千次阅读 2013-12-28 23:22:11
    WinForm窗体传值的几种方式 1.通过构 造函数 特点: 传值是单向的(不可以互相传值),实现简单 实现代 码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int value1 , string value2 ) {  ...

    WinForm窗体传值的几种方式


    1.通过构 造函数
    特点: 传值是单向的(不可以互相传值),实现简单
    实现代 码如下:
    在窗体Form2中
    int value1;
    string value2;

    public Form2 ( int value1 , string value2 )
    {
         InitializeComponent ( );

         this.value1 = value1;
         this.value2 = value2;
    }

    在窗体Form1中这样 调用
    new Form2 ( 111 , "222" ).Show ( ); //这样就把111,"222",这2个值传送给了Form2

    2.通过静态变量
    特点:传值是双向的,实现简单
    实现代码如下:
    在一个app类中定义一个静态成员value
    public class app
    {
         public static string value;
    }

    在窗体Form1中这样调用
    app.value = "f2"; //给静态 成员赋值
    new Form2 ( ).Show ( ); //显示Form2

    在窗体Form2中
    this.Text = app.value; //取回app.value的值
    app.value = "Form2"; //给app.value赋值,以 便其他窗体调用

    3.通过窗 体的公有属性值
    特点: 实现简单
    实现代 码如下:

    在窗体Form2中定义一个公有属性Form2Value,获取和设 置textBox1的文本 值
    public string Form2Value
    {
         get
         {
              return this.textBox1.Text;
         }
         set
         { 
             this.textBox1.Text = value;
         }
    }

    在窗体Form1中这样调用
    Form2 f2 = new Form2 ( );
    f2.Form2Value = "Ok"; //给Form2的textBox1赋值Ok
    f2.ShowDialog ( );

    4.通过窗 体的公有属性值和Owner属性
    特点:实现简单,灵活
    实现代码如下:
    在窗体Form1中
    public int Form1Value = 1;

    Form2 f2 = new Form2 ( );
    f2.ShowDialog ( this ); //把Form1作为Form2的所有者传递给Form2

    在窗体Form2中
    //Form2的所有者 是Form1
    Form1 f1 = ( Form1 ) this.Owner;
    //取到Form1的值是1
    MessageBox.Show ( f1.Form1Value .ToString ( ) );
    //给Form1的Form1Value赋值222
    f1.Form1Value = 222;

    5.通过窗 体的公有属性值和Application.OpenForms属性
    说明:Application.OpenForms属性:获 取属于应用程序的打开窗体的集合。(此属性 在.NET Framework2.0版中)
    实现代码如下:
    在窗体Form1中
    public int Form1Value = 1;

    Form2 f2 = new Form2 ( );
    f2.Show ( );

    在窗体Form2中
    string formName = "Form1";
    Form fr = Application.OpenForms [ formName ];

    if ( fr != null )
    {
         Form1 f1 = ( Form1 ) fr;
         //取到Form1的值是1
         MessageBox.Show ( f1.Form1Value.ToString ( ) );
         //给Form1的Form1Value赋值222
         f1.Form1Value = 222;
    }

    6.通过事件
    实现代码如下:
    在窗体Form2中定义 公有属性Form2Value,获取和 设置textBox1的文本 值
    并且还 定义一个accept事件
    public string Form2Value
    {
         get
         {
              return this.textBox1.Text;
         }
         set
        {
             this.textBox1.Text = value; 
        }
    }

    public event EventHandler accept;

    private void button1_Click ( object sender , EventArgs e )
    {
         if ( accept != null )
         {
              accept ( this , EventArgs.Empty ); //当窗体触发事件,传递自身引用
         }
    }


    在窗体Form1中
    Form2 f2 = new Form2 ( );
    f2.accept += new EventHandler ( f2_accept );
    f2.Show ( );

    void f2_accept ( object sender , EventArgs e )

    {
         //事件的接收者通过一个简单的类型转换得到Form2的引用
         Form2 f2 = (Form2) sender; 
         //接收到Form2的textBox1.Text
         this.textBox1.Text = f2.Form2Value;
    }

     

    =====================================================================================

    窗体之间传值(对象),我现在知道的有以下几种方式.

    1 构造参数/委托传值.

    通常这是最常见的方式,FORM2里面写个属性,然后把FORM1的对象赋给这个属性.然后在FROM2里面很自在的使用FORM1对象.从而得到FORM1里面设置的所有东东.

    FORM2里面定义委托和事件,在FORM1里面绑定此事件的处理程序.然后在FORM2里面触发此事件,既可把数据顺利通过参数传给FORM1.

    点评: 麻烦.

    2 静态类

    这个貌似是最简单的方法,创建一个静态类,把公用的东东都放在此类的静态属性中,使用者取之既可

    3 应用程序进程( AppDomain)

    这个才是最简单的处理方式,搞的和SESSION差不多了.


    FORM1:
    AppDomain.CurrentDomain.SetData( "XXX ", XXXX);

    FROM2:
    AppDomain.CurrentDomain.GetData( "XXX ");

       以上方法均测试通过

    展开全文
  • 第一种方法:创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用。...然后就可以通过f.Name取值了第三种方法:用构造函数在窗体Form2中int value1
  • C#窗体传值给父窗体
  • 本文实例分析了C#实现窗体间传值的方法。分享给大家供大家参考,具体如下: 1、VS 2005的Visual C# Windows应用程序和Visual C#智能设备Pocket PC 2003设备应用程序。 假设我们需要点击主窗体FMMain中的某一个按钮时...
  • C#窗体间传值.doc

    2012-04-25 11:23:47
    一个简单的窗体间textbox传值的例子
  • 自己总结的并且有代码实例,可以直接加载运行,用于窗体之间的传值
  • C#窗体间传值的方法总结C#窗体间传值的方法总结C#窗体间传值的方法总结C#窗体间传值的方法总结C#窗体间传值的方法总结
  • C# 窗体间传值一点点小技巧 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的...
  • c#窗体间传值

    2017-09-08 22:14:40
    2.通过窗体类的属性传递 从 Form1 传到 Form3 //Form1 public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e) { Form3 frm3 = new Form3(); frm3....
  • 功能描述:主窗体有一ListView控件和一“添加”Button控件。点击“添加”Button弹出一窗口,此窗口有若干TextBox,输入数据后,点击“确定”Button,数据回传到主窗体的ListView中。 核心知识:委托 实现步骤: 第一...
  • 方法一:利用委托实时传值 委托的简单的理解 在C#中委托是重点也是难点,想要对委托有非常深入的了解可以详细参考这篇博客:通俗理解C#委托和事件. 这里我们只要简单记住: 1、委托是一种用户自定义类型 2、委托是...
  • 本篇博客是利用C#委托与事件进行窗体间传值的简单小例子 委托与事件的详细解释大家可以参照张子阳的博客: http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx 个人认为上面那篇...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,599
精华内容 1,439
关键字:

c#窗体间传值

c# 订阅