• 窗体间传值


    Form1 窗体里面的单击按钮事件:

     private void button1_Click(object sender, EventArgs e)
            {
                //方法一 将当前窗体作为对象传递到show出的窗体
                 Form frm=new Form2();
                frm.Owner = this;
                frm.Show();

            }
    Form2里面的窗体load加载事件和单击按钮事件

     private void Form2_Load(object sender, EventArgs e)
            {
                Form1 frm = (Form1)Owner;
                foreach (var ff in frm.Controls)
                {
                    if (ff is TextBox)
                    {
                        this.textBox1.Text = (ff as TextBox).Text;
                    }
                }
            }
     
     private void button1_Click(object sender, EventArgs e)
            {
                //方法一
                //接收传递过来的窗体对象,找到窗体上的控件进行赋值
                Form1 frm = (Form1)Owner;
                foreach (System.Windows.Forms.Control ff in frm.Controls)//遍历传递过来窗体的所有控件
                {
                    if (ff is TextBox)//如果控件是TextBox类型
                    {
                        //if (ff.Name.Equals("textBox1"))如果是多个文本框,这里还可以去name
                        (ff as TextBox).Text= this.textBox1.Text ;
                    }
                }

            }
    这种传递,多用于将当前窗体作为对象,传递到另个传递里面,使用当前窗体里面控件的值,在show出的Form2窗体可以直接修改Form1窗体的控件的值   
    方法二:利用窗体类里面传递参数,在说show出的窗体的构造函数里面接收参数
    Form1里面的单击事件

    private void button1_Click(object sender, EventArgs e)
            {
                //方法二 在窗体类里面传递参数
                string txt = this.textBox1.Text;
                Form frm=new Form2(txt);
                frm.Owner = this;
                frm.Show();

            }
    Form2 里面的构造函数接收参数

     
            public Form2(string txt)
            {
               this.textBox1.Text = txt;
               InitializeComponent();

            }
    这种方法不用与在把值回传到第一个窗体里面
    第三种方式就是写一个类,声明静态变量,然后接受再传值,这种方法比较常用,这里就不用赘述了。
    第四种方式就是声明一个委托和事件
    在Form2窗体声明委托和事件
    public delegate void getTextdelegate(string text);//定义委托 写早class类外面,定义全局的
    public static event getTextdelegate TextCool;//定义事件 写在类里,可以直接用窗体名调用

     private void button1_Click(object sender, EventArgs e)
            {
                if (TextCool != null)
                {
                    TextCool(this.textBox1.Text);

                }
            }
    在Form1窗体里面调用

     private void button1_Click(object sender, EventArgs e)
            {
               Form2 frm=new Form2();
               Form2.TextCool += Form2_TextCool;
               frm.Show();
            }
            void Form2_TextCool(string text)
            {
                this.textBox1.Text=text;
            }

    就可以实现在Form2里面把值回传到Form1  里面了,在定义的委托里面是string类型,可以放object类型,那么就可以传我们想传的值了

    人是有思想的,这是人与动物本质的区别。人的社会属性要求我们在操守的规范下实现自我价值,越有这越给予。因此,我们要实现自己的社会价值 。这些都离不开坚定的信仰,有无信仰是一个在精神层面状态好坏的体现,不能觉得一切都无所谓。生活是一面镜子,自己是什么样子很快现行。 用知识武装自己,用信仰升华自己,用爱好装点自己,用个性标识自己。 我就是我,不一样的烟火;我就是我,不一样的水果;我就是我,不一样的花朵;我就是我,不一样的自我。 生活寄语:越努力,越幸运。 做最好的自己!
  • 相关阅读:
    JavaScript 将十进制数转换成格式类似于 0x000100 或 #000100 的十六进制数
    Java 从资源文件(.properties)中读取数据
    更改MySQL 5.7的数据库的存储位置
    PADS Layout VX.2.3 将PCB中的元器件封装保存到库
    怀疑安装MySQL之后,导致OrCAD Capture、Allegro就打不开
    Allegro PCB 转 PADS Layout 之后的修修补补
    Java 使用UDP传输一个小文本文件
    IntelliJ IDEA Commons IO环境搭建
    RestFul风格API(Swagger)--从零开始Swagger
    Spring容器的简单实现(IOC原理)
  • 原文地址:https://www.cnblogs.com/hyd1213126/p/4539648.html
Copyright © 2020-2023  润新知