コードにMain()到達可能または到達不能によって開業したの形

StackOverflow https://stackoverflow.com/questions/479368

  •  20-08-2019
  •  | 
  •  

質問

私は一部のポケットpcのアプリっと深刻な問題とその主なものは次のとおりでありま https://stackoverflow.com/questions/472598 .を眺めながら、液試みんカコードにMain():

[MTAThread]
        static void Main()
        {
            Application.Run(new Tasks());
            Application.Exit();
        }

設定にブレークポイントです。まだアプリケーションを起動し、そのウィンドウを閉、ブレークポイントを設定できます。またアプリケーションを起動し、その別ウィンドウが開き:

private void questButton_Click(object sender, EventArgs e)
        {
            QuestionnairesWindow questWindow = new QuestionnairesWindow();
            questWindow.Show();
            this.Hide();
}

しかし初期のウィンドウ

private void backButton_Click(object sender, EventArgs e)
        {
            Tasks tasksWindow = new Tasks();
            tasksWindow.Show();
            this.Close();
        }

あのと同じように、Apllication.exit()コードは決して到達しないという印象を用いなだけじゃない傷を付けても閉鎖していったんで開く。い場合には説明が複雑にな

編集:の質問です-そのアイデアはなぜで行動する異なる?

役に立ちましたか?

解決

new Tasks() Main()Tasks tasksWindow = new Tasks();

と同じオブジェクトでありません

あなたは最初にまだ存在すると死ぬことはありませんので、二閉じ、タスクの2つのオブジェクトを得ました。あなたは、QuestionnairesWindow現在の参照をTasksする渡す必要があります。

あなたは追加の<=>コンストラクタであることを行うことができます

private Tasks tasks;

public QuestionnairesWindow(Tasks t)
{
  this.tasks = t;
}

を使用します:

new QuestionnairesWindow(this).Show(); // where this = current `Tasks` created in `Main`

他のヒント

この行が問題のようです。

Tasks tasksWindow = new Tasks();

私はあなたのbackButton_Clickに、正しくコードを理解していれば、あなたのタスクフォームの新しいのインスタンスを作成している、あなたはもともと隠したものを示すのisntead。これは、オープンが、隠された一つのウィンドウがまだあるため、アプリケーションは、終了しないことを意味します。

あなたはおそらくやりたいことはタスクQuestionnairesWindowフォームへの参照を形成渡しです。

の課題であることbackButton_Clickを作成する 新しい のインスタンス作業ウインドウです。元のタスクウィンドウが実行できます。疑いが必要なパスへの参照を独自の課題になるようにQuestionnairesWindowでを選択することができるショーを設定することができます。

きを追加する必要がある公的な/内部法おQuestionnairesWindowが設定する業務形態によQuestionnairesWindowオープン。このメソッドを呼び出しにquestButton_Clickの この 参考前に呼び出します。Hide().この参照を保持する民間変数のQuestionnairesWindow.

そしてbackButton_Clickは、このprivate変数は、呼び出します。Show()メソッドは、親会社です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top