C#.NET winformsアプリケーションを閉じる方法を理解できません。私がしようとしているのは次のとおりです。Application.Run()が呼び出される前に終了(終了)とアプリケーションが呼び出されていますか?
ユーザーが環境を設定できるようにフォームを表示 ユーザーが「OK」ボタンを押した場合、アプリケーション環境を設定するためのロジックを実行します(オブジェクトのインスタンス化など) ユーザーが「キャンセル」を押すか、ウィンドウを閉じると、アプリケーションを閉じます。
問題は、メイン(1st)フォームの前に環境設定フォームを呼び出していることです。最近の要件の変更であり、私が最初から持っているコードを書き直すことは夢中ではありませんでした。
私は(私の小さなプリアンブルよりも多くの意味をなすべきかを)持っているコードは次のとおりです。
public MainForm()
{
InitializeComponent();
//Get the user to set-up the environment (load specific config files, etc)
environmentSetupForm newEnvrionmenSetupForm = new environmentSetupForm();
if (newEnvrionmenSetupForm .ShowDialog() == DialogResult.OK)
{
newEnvrionmenSetupForm .Close();
//some logic based on what the user selected on the set-up form
}
else
{
//Since the user didn't set-up the environment correctly (there
//was a message box, informing them and giving them another
//shot at it), exit out of the application.
Application.Exit();
}
}
私の唯一の問題は、Application.Exit()は、スタックはProgram.csをして実行するに戻ってジャンプした後、
Application.Run(new MainForm());
したがって、メインフォーム(およびアプリ)は関係なく実行されます。私がやろうとしていることをする良い方法はありますか?
編集:明確にするための私のProgram.csのコードを読み取ります
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace myNamespace
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
正しいサンプルコードを提供しているか、program.csコードを組み込むように編集しているかどうかを確認できますか?これが問題です。 –
@JesusSalas:Program.csを含めるように編集しました –
@JamieTaylorイエスは正しいです。あなたが記述したものは、コードが行うものと同じではありません。 'Application.Exit()'の呼び出しの後に何が起きているのか間違っています。あなたは既に 'Application.Run()'で*実行中ですので、もう一度入力しません。あなたのロジックはどこか後方になければなりません。 –