当前位置:首页 > C# > 正文内容

C# 窗体间传值(Form与From之间互相传值)

admin7年前 (2018-06-04)C#7352

1、委托

  两个窗体,窗体很简单,只实现改变颜色功能,一看就会:

代码如下,只贴按钮事件代码:



打开Form2按钮事件

private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.ChangeColor += new ChangeFormColor(frm2_ChangeColor);
            frm2.Show();
        }

        void frm2_ChangeColor(bool topmost)
        {
            this.BackColor = Color.LightBlue;
            this.Text = "改变成功!";
        }



改变Form1颜色按钮

     //定义一个委托         
        public delegate void ChangeFormColor(bool topmost); 
        //给一个事件
        public event ChangeFormColor ChangeColor; 
        private void button1_Click(object sender, EventArgs e)
        {
            ChangeColor(true);
            this.Close();
        }


2、先截图来看

修改之后按Confirm,关闭form2,自动刷新form1,思路是这样:在form1上面查询显示到datagridview,右键选择修改,弹出模式窗体form2,修改,关闭,自动刷新form1。



            //添加到修改按钮里面,弹出模式窗体Form2,进行修改
            Form2 form2 = new Form2();
            form2.Owner = this;
            form2.ShowDialog();


Confirm按钮代码

if (//你的修改方法)
            {
                MessageBox.Show("修改成功!");
                //把拥有Form2的窗体强制转换为Form1,然后赋值给Form1窗体类型的变量form1
                Form1 form1 = (Form1)this.Owner;
                //注意下面select()方法,是form1里面的一个查询方法,作用等于refresh,但refresh不行,无所谓,调用这个方法来刷新一样的。
                form1.select();
                Close();
            }

3、第三种有点小麻烦,但也不错(如果修改的数据单一,比较少的话)

两个窗体的截图如下


单击choose 弹出form2,选择完性别之后,关闭窗体,数据传递到form1sex框中,代码少,全贴出来吧


Form1 窗体全部代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            if (frm2.ShowDialog()==DialogResult.OK)
            {
                //用模式窗体弹出来,给form2里面public属性的strSex赋值
                textBox2.Text = frm2.strSex;
                frm2 = null;  //清空
            }
        }
    }
}



Form2 窗体全部代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        
        //定义一个private属性str用于存储sex,用到什么属性,就自己加什么属性,完了把光标停到属性str这里,按Ctrl+R,E,自动封装
        private string str;

        public string strSex //这里自动封装后应该是Str,我改了改名字,表纠结这个
        {
            get { return str; }
            set { str = value; }
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            //赋值完之后关闭窗体
            this.strSex = comboBox1.SelectedText;
            this.DialogResult = DialogResult.OK;
        }
    }
}




扫描二维码推送至手机访问。

版权声明:本文由视觉博客发布,如需转载请注明出处。

本文链接:https://feelsight.cn/post/63.html

“C# 窗体间传值(Form与From之间互相传值)” 的相关文章

UDP穿透NAT的原理与实现(UDP“打洞”原理)

NAT(The IP Network Address Translator) 的概念和意义是什么?NAT, 中文翻译为网络地址转换。具体的详细信息可以访问RFC 1631 - http://www.faqs.org/rfcs/rfc1631.html, 这是对于NAT的定义和解释的最权威的...

C#获取机器码的方法详解(机器名,CPU编号,硬盘编号,网卡mac等)

这篇文章主要介绍了C#获取机器码的方法,结合实例形式详细分析了C#获取硬件机器名、CPU编号、硬盘编号、网卡mac等信息的相关实现方法,需要的朋友可以参考下本文实例讲述了C#获取机器码的方法。分享给大家供大家参考,具体如下:using System.Runtime.InteropServi...

C# 非独占延时函数 非Sleep

在C#窗口程序中,如果在主线程里调用Sleep,在Sleep完成之前, 界面呈现出假死状态,不能响应任何操作!下边实现的是非独占性延时函数,延时过时中界面仍可响应消息:public static void Delay(int milliSecond) {&n...

安装包制作工具 SetupFactory使用1 详解

安装包制作工具 SetupFactory使用1 详解

Setup Factory 是一个强大的安装程序制作工具。提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序。可建立快捷方式,也可直接在 Windows 系统的注册表加入内容,还能在 Win.ini 和 System.ini 内加入设定值,更可以建立反安装选...

C#修改图片分辨率

public static Bitmap KiResizeImage(Bitmap bmp, int newW, int newH) { try { Bitmap b =...

C#全局监听Windows键盘事件

1.工具类代码 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。