- - PR -
フォームの破棄について
1
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-21 23:01
武装キョンシーです。
よろしくお願いします。 参照設定に別プロジェクトのメインフォームを設定しています。 マイプロジェクトで作成したフォームをメインから呼び出され終了ボタンを押したらチェック機能終了後にメインに戻るといった動作を目的に勉強しています。 頻繁に使用するとされるメインは移動後はHyde()メソッドで隠しておいたほうがいいとおもわれますが、呼び出された側のほうは作業完了後は画面を閉じてしまいたいのですがCloseで問題はないのでしょうか?(クローズだと単体でデバックしてテストすると フォームが消えてしまいメインが残らなかった) closeとdisposeでの違いなどをご教授、アドバイスお願いします。 Option Strict On imports System imports System.Date imports System.Windows.form imports text imports Design Public Class Form [ Windows フォーム デザイナで生成されたコード ] #Region " Form2 を表示するボタン " Private Sub btn_Click(...) Handles btn.Click Dim mainform As mainclass.mform mainform = New mainclass.mform 'チェックをする機能 if チェック判定 = true then mainform.show Me.close() else msgbox("やり直しです。") exit sub end if End Sub | ||||||||||||||||||||
|
投稿日時: 2006-10-21 23:52
ちょっと意味がわかりにくいです。 以下のようなイメージで受けとめました。 あるプロジェクトで作成したフォーム (FormA とする) があります。 この FormA を含むアセンブリは、メインとなるアセンブリから参照設定されております。 FormA は、メインとなるアセンブリから表示されます。('何で' 呼び出されるのかが不明ですが) 表示された後、FormA にある [終了] ボタンを押下するとある検証を行います。 検証を行ったあとは、FormA を閉じ、メインとなる実行ファイルに制御を戻します。
それは、L'Arc ~ en ~ Ciel の方ですね。 正しくは Hide メソッドです。
何を使って、呼び出しているかによります。 メインとなるアセンブリから Show メソッドで呼び出しているのであれば、Close メソッドだけで良いです。
ごめんなさい、ここの意味がわかりませんでした。
ShowDialog メソッドで Form を呼び出しているのであれば、 呼び出している側で、Dispose メソッドが必要になります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-10-22 23:26
分かりにくく申し訳ありません。
参照設定はメインフォームのあるプロジェクト、マイプロジェクトの両方で 設定しています。 メインからはFormをshowメソッドで呼び出しています。 このとき、メインは何回も使用されるベースとなるためhide()でメインのあるクラスは処理を終えています。 Public Class Form にあるPrivate Sub btn_Click(...) Handles btn.Click は呼び出される側のフォームにあるクラスです。 とりあえずとして、動作のテストとしてこの呼び出される側からデバックしてボタンイベントでメインのフォームを呼び出してclose()してみたところメインも閉じてしまったためメインフォームはのこしたままで呼びだされるフォームのみ閉じるといった動作を実現するにはやりかたがまちがっているのかがわからなかったのでこちらで質問させていただきました。 | ||||||||||||||||||||
|
投稿日時: 2006-10-23 10:32
ごめんなさい、未だに意味が理解できないでいますが、
このようなイメージで良いでしょうか...? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-11-08 21:56
なんか、よくある問題のような気がする。
アプリケーションの、エントリポイントを探してください。 そこで、Application.Run(New MainForm) とかって、書いてあると思います。 ここで、アプリケーションを動作させるためのオブジェクトである MainForm のインスタンスを閉じると、この Run メソッドから抜けるため、アプリケーションが終了します。 どうしたらいいかは、どうしたいのかよくわからないので答えられない。 _________________ | ||||||||||||||||||||
|
投稿日時: 2006-11-08 23:51
saki1208です。
ここで言われている、「マイプロジェクト」のスタートアップフォームに Form2を指定されているのであれば、Close()した場合には、プログラムが 終了してしまうのではないでしょうか? ※この場合は、多分Hide()でも同じじゃないですかねぇ? スタートアップを「Sub Main」などとして、プログラムを終了して良い条 件になるまでループして、ShowDialogし続ける必要があるのでは? (本格的には.Netでものづくりをしたことがないので間違っている可能性 は大ですが...) ※試してみたら... DOS窓が表示されるじゃないか よく見たら... 全然勘違いしてる気がする... [ メッセージ編集済み 編集者: saki1208 編集日時 2006-11-08 23:58 ] |
1