2016-12-22 5 views
0

私は古いハンドヘルドデバイス用のアプリケーションを開発しようとしています.Net 3.5 Win CE 5を実行していますが、基本的なハードル切り替えフォームを乗り越えることはできません!Win CE 5アプリケーションでフォームナビゲーション

私は

Application.Run(new frm_class()); 

を使い始めたが、これはもはやその後、2つのフォームを開いた後にクラッシュし始めました。

その後試しました。

this.hide(); 
frm_class frm = new frm_class(); 
frm.show(); 

は、ちょうど、私は誰かがこれを処理する非常に単純なクラスを書いてみフォーム をロードするのに一定のループになってしまいました。二番目の形式をロードするときにアプリケーションをシャットダウン

frm_class frm = new frm_class(); 
    switchform(frm,this); 

介し

public static void switchForm(Form newForm, Form oldform) 
    { 
     newForm.Show(); 
     oldform.Hide(); 
     oldform.Dispose(); 
    } 

コール。

これはとてもばかげているようですが、このフォームを閉じてこのフォームを開くか、またはその逆の簡単なフォームをナビゲートする方法を見つけることができません。

誰でもお手伝いできますか?

答えて

1

Application.Run(new frm_class());はメッセージループを開始し、指定されたフォームを表示し、閉じられるまで待機します。指定されたフォームが閉じられると、メッセージループは終了します。 oldform.Dispose();はフォームを非表示にして(閉じて)処理します。

2つ目の解決方法は、ループしないでください。同じフォームを再度作成する場合は、コードがコンストラクターまたはform_loadイベントにないことを確認してください。これを取り巻くコードを投稿できますか?

からnew frm_class()引数を削除することもできます。これにより、一定の実行メッセージループが作成されます。ある時点でApplication.Exit()に電話することを忘れないでください。

このコードブロック内の実行はフォーム内からApplication.Exit()が呼び出されるまで続行されないため、パラメータなしのApplication.Run()の前にフォームが表示されるようにする必要があります。

frm_class frm = new frm_class(); 
frm.Show(); 
Application.Run(); 

// Some button or event inside the form should be executing the exit call: 
Application.Exit(); 
関連する問題