[英]Why doesn't C# .Net Framework Web Form Application have a Main function, or Program.cs
[英]C# Winforms: Is it possible to have a function in a form called from the main Program.cs?
因此,我的Program.cs中有这个Exited事件,在这里我有应用程序的主要入口点。 它打开另一个外部程序并监视其状态。 如果此外部程序关闭,则需要在最初打开的窗体上弹出一个对话框。 我知道如何捕获已退出的事件,但是我需要使用要执行的操作在另一种形式上调用或运行一个函数。
public static class Program
{
public static void ExternalProgramFunction()
{
System.Diagnostics.Process startExternal = System.Diagnostics.Process.Start("external.exe", String.Format(ConnectionArg));
startExternal.EnableRaisingEvents = true;
startExternal.Exited += ExternalProgramExits;
}
public static void ExternalProgramExits(object sender, EventArgs e)
{
if (UserClose == false)
{
/// Need code here to open dialog box on another form!!!
}
}
/// The main entry point for the application.
[STAThread]
static void Main(string[] arguments)
{
UserClose = false;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Manager());
我希望此代码执行另一种形式的以下功能。 我这样做是为了打开对话框,并阻止表单被单击。 我下面列出的是其他表单中的一些代码。 我想从Program.cs运行prematureclosepopup
public Manager()
{
InitializeComponent();
}
public void PrematureClosePopup()
{
ManagerWarning messagepopup = new ManagerWarning();
messagepopup.ShowDialog();
}
您只需要保留对Manager
对象的引用:
static Manager _someClassMemberVariable;
然后将Main()
的最后一行更改为:
_someClassMemberVariable = new Manager();
Application.Run(_someClassMemberVariable);
然后,您可以将ExternalProgramExits()
方法更改为:
public static void ExternalProgramExits(object sender, EventArgs e)
{
if (UserClose == false)
{
_someClassMemberVariable.PrematureClosePopup();
}
}
我认为您尝试执行的操作没有任何开箱即用的功能。 您可以让主机应用程序实现TCP套接字,然后生成的其他应用程序充当TCP客户端,并发送命令并获得响应,无论他们说是还是否。 如果您对“ external.exe”程序没有任何控制,则此方法将无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.