C# 多界面参数传递方法

多界面参数传递

  需要在多个界面之间相互传递参数,对方法做记录与实例,以便回顾。

重写构造函数

父窗体:

 private void ToolStripMenuItem1_Click(object sender, EventArgs e)
{
	globalparam.ItermPath = "string";
	DeviceConnectForm DeviceConnect = new DeviceConnectForm(globalparam.ItermPath);
	
	DeviceConnect.ShowDialog();//模态

}

重载子窗体的构造函数

public partial class Form2 : Form
{
	public DeviceConnectForm(string ItermPath)//修改构造函数,增加一个字符串形参
    {
        InitializeComponent();
        CB_SourceAddr.Text = ItermPath; //界面显示
    }
}

缺点:父窗体向子窗体传递,只能传递一个参数,不能子窗体向父窗体传递。

通过子窗体私有变量传递

父窗体:

//传递变量到子窗口
private void btn_Input_BtnClick(object sender, EventArgs e)
{
    childForm childForm = new childForm();//childForm为新建窗口类
    childForm.str = this.tb_MainFormIn.InputText ;//str为子类的公有变量
    if (childForm.ShowDialog() == DialogResult.OK) return;
}

子窗体:

namespace demo_Params
{
    public partial class childForm : Form
    {
        public childForm()
        {
            InitializeComponent();
        }

        //私有变量和赋值,value值在父窗口传递
        public string ItermPath;
        public string str
        {
            set
            {
                ItermPath= value;
            }
        }
        //显示父窗口的变量到文本框
        private void btn_getPara_BtnClick(object sender, EventArgs e)
        {
            this.tb_childFormIn.Text = ItermPath;
        }
    }
}

PS:方向为父窗体向子窗体传递

事件委托

  通过委托事件和事件触发执行函数来解决参数的传递和接收。

父窗体:

namespace WindowsFormsApp1
{
    public partial class MainPage : System.Windows.Forms.Form
    {
		public MainPage()
	    {
	        InitializeComponent();
	    }
		private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
	    {
	        NewIterm newIterm = new NewIterm();
	        newIterm.getParam += new backParam(GetChildParam);//绑定事件
	        newIterm.ShowDialog();
	    }
	
	    //委托事件执行方法
	    void GetChildParam(string ItermPath)
	    {
	        globalparam.ItermPath = ItermPath;
	    }
	}
}

子窗体:

namespace NewItermForm
{

    public delegate void backParam(string str);//声明委托
    public partial class NewIterm : Form
    {
        public struct Globalparam
        {
            public bool isDragging;
            public Point dragOffset;
            public String ItermPath;
        };

        public string str;

        //实例化结构体
        public Globalparam globalparam = new Globalparam();

        public event backParam getParam;//委托事件,接受一个string变量

        public NewIterm()
        {
            InitializeComponent();
        }

        private void NewIterm_Load(object sender, EventArgs e)
        {
            globalparam.ItermPath = SaveFile();
        }
        private void Btn_Exit_Click(object sender, EventArgs e)
        {
            this.Close();
            getParam(globalparam.ItermPath);//委托
        }
    }
}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mapoplus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值