using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Threading; using System.Runtime.InteropServices; using System.Diagnostics; namespace mainProgram { public partial class main : Form { public main() { InitializeComponent(); } private ProjectManager mProjectManager = null;//保存打开的/新建的工程对象 public void RecieveProjectManager(ProjectManager value) { mProjectManager = value; Console.WriteLine("工程文件目录为:" + mProjectManager.ProjectPath + "---------------------"); } private void newToolStripMenuItem_Click(object sender, EventArgs e) { NewProjectWindow w = new NewProjectWindow(); w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void OpenProjectToolStripMenuItem_Click(object sender, EventArgs e) { OpenProjectWindow w = new OpenProjectWindow(); w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void RadToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } RadCorrectionWindow w = new RadCorrectionWindow(mProjectManager); //w.TransferEvent += RecieveProjectManager; var addr2 = getMemory(mProjectManager); Console.WriteLine("父窗口变量的地址 = " + addr2); //w.Show();//不阻塞 w.ShowDialog();//阻塞 } public string getMemory(object o) // 获取引用类型的内存地址方法 { GCHandle h = GCHandle.Alloc(o, GCHandleType.WeakTrackResurrection); IntPtr addr = GCHandle.ToIntPtr(h); return "0x" + addr.ToString("X"); } private void ExitToolStripMenuItem_Click(object sender, EventArgs e) { } private void main_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("确实退出吗", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { e.Cancel = false; } else { e.Cancel = true; } } private void SvdToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } SVDWindows w = new SVDWindows(mProjectManager, "svd"); //w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void DoasToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } SVDWindows w = new SVDWindows(mProjectManager, "doas"); //w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void SfmToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } SVDWindows w = new SVDWindows(mProjectManager, "sfm"); //w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void SfmGaussinToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } SVDWindows w = new SVDWindows(mProjectManager, "sfm_gaussian"); //w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void SfldToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } SVDWindows w = new SVDWindows(mProjectManager, "sfld"); //w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } private void Fld3ToolStripMenuItem_Click(object sender, EventArgs e) { if (mProjectManager is null) { MessageBox.Show(this, "请先打开工程!", "提示"); return; } SVDWindows w = new SVDWindows(mProjectManager, "3fld"); //w.TransferEvent += RecieveProjectManager; //w.Show();//不阻塞 w.ShowDialog();//阻塞 } } }