私は2つのプロジェクトで構成される新しいソリューションを作成しようとしています。ソリューションスタートアッププロジェクトは「メインコンポーネント」プロジェクトで、もう1つは「ログイン機能」プロジェクトです。if条件でコンポーネントを初期化しますか?
"メインコンポーネント"のメインフォーム "ログイン機能"でLoginFormを呼び出すソリューションが開始されたとき。私は、MainFormコンストラクタでLoginFormを呼び出し、完璧に動作する条件を書いていますが、LoginFormからエスケープするときにProgram.csのようなエラーが表示されます。 initializeComponent()はconditionがtrueのときに働くためです。私はそれを行う別の方法がわからない。
解決策は動作していますが、このDispose問題を解決するにはどうすればよいですか?
Program.cs;
namespace Main_Component
{
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using (var mainForm = new MainForm())
{
Application.Run(mainForm);
}
}
}
}
が配置されたオブジェクトにアクセスすることはできません\ rを\ nObject名: 'MainFormを'。あなたが適切にIDisposableインターコンポーネントを配置していない
public MainForm()
{
try
{
var _lForm=new LoginForm();
_lForm.ShowDialog();
if (LoginForm._loginSuccess)
{
InitializeComponent();
}
else
{
this.Close();
}
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
代わりのMainForm'は、なぜメイン 'から' LoginForm'を() '起動し、成功でログイン時にその打ち上げ'のMainFormを() '持たない'起動します。 –
それは私がログイン機能として起動proectに変更することを意味します。私はログインフォームを隠してメインフォームを表示する必要があります。もしあなたが言ったようにしますが、私はスタートアッププロジェクトを隠したくありません。 – Okan
@いいえいいえ、そうではありません。 'Main'は独自のアプリケーションループを持って、それ自身のメインフォームとしてログインフォームを起動します。終了したら、新しいアプリケーションループで新しいメインフォームを起動します。 – Servy