私は自分のアプリケーションのメインエントリポイントを持つProgram.csにこのExitedイベントを持っています。別の外部プログラムを開き、その状態を監視します。この外部プログラムが終了すると、最初に開くフォーム上にダイアログボックスが表示されます。私は終了したイベントをキャプチャする方法を知っていますが、私は実行したいアクションで別のフォームで関数を呼び出したり実行したりする必要があります。C#Winforms:メインProgram.csから呼び出されたフォームに関数を含めることは可能ですか?
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();
}
お互いに話す必要のあるアプリケーションは2つありません。 OPが行っているのは、同じアプリケーションのフォーム上でメソッドを呼び出すことだけです。 – itsme86