C#EXE相互引用实现

2025-10-22 00:56:42

1、新建一个WPF工程。点击【新建项目】弹出新建项目窗口,在C#模板下选择【WPF应用程序】,输入项目名称:WPF_EXE引用,点击【确定】

C#EXE相互引用实现

2、在MainWindow.xaml页面中添加菜单,控制界面打开和程序退出,代码如下:

<Window x:Class="WPF_EXE引用.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="350

    <Grid>

        <Menu x:Name="mainMenu"  HorizontalAlignment="Left" VerticalAlignment="Top"  Height="23">

            <MenuItem Header="文件(_F)" >

                <MenuItem Header="帮助"  />

                <Separator/>

                <MenuItem Header="退出" Click="MenuItem_Click_退出" />

            </MenuItem>

            <MenuItem Header="设置(_S)" >

                <MenuItem Header="MTF设置"  />

            </MenuItem>

            <MenuItem Header="自动AA开启及调试" Click="MenuItem_Click" />

        </Menu>

    </Grid>

</Window>

C#EXE相互引用实现

3、在MainWindow.xaml.cs页面中添加如下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

namespace WPF_EXE引用

{

    /// <summary>

    /// MainWindow.xaml 的交互逻辑

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)

        {

            雷赛卡界面.Hide();

            雷赛卡界面.Close();

        }

        public dynamic 雷赛卡界面 = null;

        public double[] mtfs;

        private void MenuItem_Click(object sender, RoutedEventArgs e)

        {

            雷赛卡界面.Show();

            this.Topmost = false;

            雷赛卡界面.TopMost = true;

        }

        private void MenuItem_Click_退出(object sender, RoutedEventArgs e)

        {

            this.Close();

        }

    }

}

C#EXE相互引用实现

4、添加一个名为MTF5的新类。可点击VS菜单项中的【项目】在其下拉菜单中找到【添加类】并点击,弹出添加新项窗口,在点击C#项中【类】,输入名称MTF5,点击【添加】按钮

C#EXE相互引用实现

5、在MTF5.cs页面中添加复制粘贴如下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using WPF_EXE引用;

public class MTF5

{

    public static void 启动(dynamic Form, ref double[] mtfs)

    {

        MainWindow a = new MainWindow();

        a.mtfs = mtfs;

        a.雷赛卡界面 = Form;

        Form.Hide();

        a.Show();

    }

}

C#EXE相互引用实现

6、在当前解决方案中添加一个WinForm工程。选中【解决方案...】上点击右键,弹出右键菜单,选中【添加】,出现子菜单,选中【新建项目】点击,弹出添加新项目窗口。选择【Windows窗口应用程序】,在项目名称中输入想要的名称,这里为:雷赛卡界面程序,然后点击【确定】

C#EXE相互引用实现

7、在雷赛卡界面程序中添加引用WPF_EXE引用。选中WinForm程序下的【引用】,弹出右键菜单,点击其中的【添加引用】。弹出引用管理器,在【解决方案】中,勾选中WPF工程,然后点击【确定】,完成引用。

C#EXE相互引用实现

8、在Form1中添加如下代码:

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;

namespace 雷赛卡界面程序

{

    public partial class Form1 : Form

    {

        public double[] mtfs = new double[5];

        public Form1()

        {

            InitializeComponent();

            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);

            MTF5.启动(this, ref mtfs);

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            if (this.Visible)

            {

                e.Cancel = true;

                this.Hide();

            }

            else

            {

                e.Cancel = false;

                //this.Show();

                //System.Threading.Thread.Sleep(2000);

            }

        }

    }

}

C#EXE相互引用实现

9、将WinForm程序(雷赛卡界面程序)设为启动项目。选中【雷赛卡界面程序】项目,弹出右键菜单,点击【设为启动项目】。

C#EXE相互引用实现

10、分别编译WinForm程序和WPF程序。按F5执行,可以查看两窗口切换情况了。

C#EXE相互引用实现

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢