窗体之间方法调用(一)

一、将主窗体放到全局变量里面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    class Global
    {
        public FormMain CurMain = null;

        //单例实现
        private static Global uniqueInstance;
        private static readonly object locker = new object();
        private Global()
        {
        }
        public static Global GetInstance()
        {
            if (uniqueInstance == null)
            {
                lock (locker)
                {
                    // 如果类的实例不存在则创建,否则直接返回
                    if (uniqueInstance == null)
                    {
                        uniqueInstance = new Global();
                    }
                }
            }
            return uniqueInstance;
        }

    }
}

二、主窗体的加载时初始化,定义公共方法和变量

  public partial class FormMain : Form
    {
        public string strA;
        public void FunA(string strTest)
        {
            strA = strTest;
        }

        public FormMain()
        {
            InitializeComponent();
        }

        private void FormMain_Load(object sender, EventArgs e)
        {
            Global.GetInstance().CurMain = this;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FormB f = new FormB();
            f.ShowDialog();
        }
    } 

三、窗体B的调用窗体A的方法

Global.GetInstance().CurMain.FunA("Test");
string strTest = Global.GetInstance().CurMain.strA;

猜你喜欢

转载自blog.csdn.net/loveheronly/article/details/80427287