一、将主窗体放到全局变量里面
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;