C#窗体间传值的方式

一、窗体间传值的方式;

1、通过通过Tag属性传值;

2、构造函数传值

3、通过事件参数传值

1.1、通过通过Tag属性传值;

//winform窗体间传值(使用Tag属性)

 Form1中:
   private void Button1_Click(object sender,EventArgs e)
  
  {
    Dataset ds=goods.GetInfoDataSet();
    if(ds.Table[0].Rows.Count>0)
     {
        Form2 f2=new Form2();
        f2.Tag=ds;
        f2.Show();
    }
  }
 Form2中:
    private void Form2_Load(object sender,EventArgs)
    {
        DataSet ds=(DataSet)this.Tag;
        if(ds.Table[0].Rows.Count>0)
        {
            this.textbox1.text=ds.Table[0].Rows[0][0].ToString();
            this.textBox2.Text=ds.Table[0].Rows[0][1].ToString();
        }        
    }
    
    

    
1.2、构造函数传值

简单地说就是通过一个按钮的点击事件,在Form2实例化的过程中把From1的控件的值传给From2的构造函数,再把值赋给相应的控件;

 Form1中:
 
//Form1的按钮点击事件内:
   private void Button1_Click(object sender,EventArgs e)
  
  {
    Form2 f2  = new Form(TextBox.Text);
    From2.Show();

  }


 Form2中:
 
//From2的构造函数:引入一个String类型的变量
   

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        
        //构造函数传值
        public Form2(string s)
        {
            InitializeComponent();
            //赋值给From2的Label1,显示出来的文字就是Form1的TextBox.Text;
            label1.Text = s;
        }
    }


1.3、通过事件参数传值

//当前窗体产生一些重要数据,事件作为消息的通知者,将数据存储起来,发送给多个注册此事件的其他窗体

MyEventArg 类

namespace WindowsFormsApp1
{
    class MyEventArg : EventArgs
    {

        public string Text { get; set; }
    }
}

Form1中:

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {

        public event EventHandler SendMsgEvent; //使用默认的事件处理委托

        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {

            #region 方法3(推荐)--事件方式
            //子窗体弹出来之前,注册事件,关注主窗体消息的变化,当有多个窗体需要接收信息,只需要在此修改即可
            Form2 f2 = new Form2();
            SendMsgEvent += f2.MainFormTxtChaned;//为子窗体注册事件,在子窗体中事件处理代码中设置文本

            //触发事件
            //EventArgs, 写一个子类继承该类,子类中添加需要封装的数据信息,此处只需要传递string信息,详见MyEventArgs

            SendMsgEvent(this, new MyEventArg() { Text = this.textBox1.Text });
            f2.ShowDialog();
            #endregion
        }
    }
}


Form2中:

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

        public void MainFormTxtChaned(object sender, EventArgs e)
        {
            //取到主窗体的传来的数据
            MyEventArg arg = e as MyEventArg;

            this.textBox1.Text = arg.Text;

        }


    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 不好意思,你的问题似乎不太明确。"c"可能是一个字母,一个单词,或者是其他的某种意思。如果你能够提供更多的背景信息或者明确你想要了解的内容,我将会尽力给你一个更准确的回答。 ### 回答2: 好的,我会用中文来回答您的问题。 C是计算机科学中的一门编程语言,它最初由美国贝尔实验室的丹尼斯·里奇(Dennis Ritchie)在1972年设计和开发。C语言是一种通用的高级编程语言,被广泛用于系统软件、嵌入式系统和应用程序开发等领域。 C语言具有简洁、高效和灵活的特点,它提供了丰富的编程工具和许多底层的操作功能,使得开发者可以更加精确地控制计算机的硬件和软件资源。C语言的语法规则相对简单,易于学习和理解,这也是它成为许多计算机科学教育领域中的第一门编程语言的原因之一。 C语言的应用范围广泛,包括操作系统、编译器、数据库系统、游戏开发和网络应用等。许多著名的软件和系统都是使用C语言开发的,比如UNIX操作系统、Linux操作系统、MySQL数据库等。 另外,C语言还衍生出了许多其他流行的编程语言,比如C++、C#和Objective-C等。这些语言基于C语言,并在其基础上添加了许多新功能和特性,以满足不同领域的需求。 总的来说,C语言在计算机科学中起着重要的作用,它是一门强大而广泛使用的编程语言,为开发者提供了丰富的工具和底层操作能力,使得他们可以更好地控制计算机资源并实现复杂的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值