LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#窗体间传值方法汇总

admin
2023年5月22日 11:9 本文热度 546

最终效果,就是点主窗体的按钮,更改子窗体picturebox的图片:

新建项目,添加一个主窗体Form1和子窗体Form2,我们的任务是,在主窗体点击按钮控制子窗体的picturebox控件。

1、第一种方法:

Form2子窗体代码:

namespace FormConnections

{

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }

        

        //建立一个公共函数用来更改pictureBox1的图片

        public void SetPic()

        {

            pictureBox1.ImageLocation = "c#.jpg";

        }

        

        private void pictureBox1_Click(object sender, EventArgs e)

        {         

            //点击图片清空,为了调试用

            pictureBox1.Image = null;

        }

    }

}

Form1调用这个函数就可以了:

namespace FormConnections

{

    public partial class Form1 : Form

    {   

        public Form1()

        {

            InitializeComponent();

        }

        

        //实例化两个子窗体

        Form2 f2 = null;

        

        private void Form1_Load(object sender, EventArgs e)

        {            

            //打开子窗体

            f2 = new Form2();

            f2.Show();

        }        

        

        private void button2_Click(object sender, EventArgs e)

        {  

            //执行Form2的公共函数

            f2.SetPic();

        }

    }

}


2、第二种方法,用委托

子窗体代码不变,父窗体代码:

namespace FormConnections

{

    public partial class Form1 : Form

    {  

        public Form1()

        {

            InitializeComponent();

        }

        Form2 f2 = new Form2();        

        

        private void Form1_Load(object sender, EventArgs e)

        {       

            //打开子窗体

            f2.Show();

        }        

        

        private void button2_Click(object sender, EventArgs e)

        {      

            //用委托去执行子窗体的内容

            this.Invoke(new Action(() => 

            {

                f2.SetPic();

            }));

        }

    }

}


3、第三种方法,用事件解决此类问题

父窗体代码:

namespace FormConnections

{

    public partial class Form1 : Form

    {    

        public Form1()

        {

            InitializeComponent();

        }        

        

        //定义绑定FORM2更改图片操作的事件

        public event EventHandler ChangeForm2Pic;        

        

        private void Form1_Load(object sender, EventArgs e)

        {

            Form2 f2 = new Form2();            

            //父窗体加载时,实例化Form2,并绑定事件

            ChangeForm2Pic += f2.ChangePicEvent;

            f2.Show();

        }        

        

        private void button2_Click(object sender, EventArgs e)

        {        

            //点击按钮,执行事件

            ChangeForm2Pic(this, new Form2.PicPathArg() { PicPath = "C#.jpg" });

        }

    }

}

子窗体代码:

namespace FormConnections

{

    public partial class Form2 : Form

    {    

        public Form2()

        {

            InitializeComponent();

        }        

        

        //内部函数

        void GoSetPic(string picpath)

        {

            pictureBox1.ImageLocation = picpath;

        }        

        

        internal void ChangePicEvent(object sender, EventArgs e)

        {            

            //执行事件时,得到传递来的参数

            PicPathArg thepicpath = (PicPathArg)e;            

            //执行内部函数

            this.GoSetPic(thepicpath.PicPath);

        }        

        

        public class PicPathArg : EventArgs

        {            

            //传递主窗体的数据信息

            public string PicPath { get; set; }

        }        

        

        private void pictureBox1_Click(object sender, EventArgs e)

        {      

            //点击图片清空,为了调试用

            pictureBox1.Image = null;

        }

    }

}


该文章在 2023/5/22 11:17:58 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved