0
CのWindowsアプリケーション内の別のフォームにリダイレクトします。は、私は、既存のフォームを閉じするには、以下の機能を使用して、新しいフォームを開封しております。#
{のSystem.InvalidOperationException:有効ではありませんクロススレッド操作:コントロール「スクリーンセーバー」スレッド以外のスレッドからアクセスコードは、既存のフォーム
エラーを閉じようとするとき は、私は以下のエラーを取得していますそれはで作成されました。
コード:
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
StartThread();
Application.Run(new MyContext(new Screensaver()));
}
public class MyContext : ApplicationContext
{
static private Form curMain = null;
public MyContext(Form main)
{
MyContext.NewMainForm(main, false);
}
static public void NewMainForm(Form main, bool ClosePreviousMain)
{
try
{
if (main != null)
{
if (ClosePreviousMain & MyContext.curMain != null)
{
MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.Close();
}
MyContext.curMain = main;
MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.Show();
}
}
catch (Exception ex)
{
ExceptionHandler.writeToLogFile(System.Environment.NewLine + "Message : " + ex.Message.ToString() + System.Environment.NewLine + "Stack : " + ex.StackTrace.ToString());
}
}
static private void main_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
}
こんにちはフレドリックモルク、 今魔法のように動作し、フォームを閉じる を。 しかし、既存のフォームを閉じた後にフォームを表示する際の問題。 WATSが起こって、私はそれではなく、フォームを開く新しいプロセスを開き、任意のexception.Insteadを取得しておりません、です。 プロセス名は新しいフォーム名と同じです。 おかげで、 – Anuya
こんにちはフレドリックモルク、今働いて その。私は使用されました。 MyContext.currform.ShowDialog()。 ありがとう – Anuya