半角カナの利用は避けてください。
■No55307 (あんず さん) に返信
> Dim form1 As New form1(Me)
・クラス名と変数名を同じ名前にする事は避けましょう。
実行には問題が無いとしても、混乱の元です。
・Form に、引数1個を受け取るコンストラクタはありませんので、
おそらく、独自の Sub New を作っているのだとは思いますが、
その中の処理はどのようになっていますか?
> Dim dr As DialogResult = form1.ShowDialog()
本来は、使い終わった Form に対して Dispose が必要です。
Show で表示している場合は、フォームが閉じられた時に、自動的に Dispose されますが、
ShowDialog で Form を表示する場合は、Using を使った方が望ましいです。
http://msdn.microsoft.com/ja-jp/library/c7ykbedk.aspx
》 ダイアログ ボックスとして表示されているフォームは
》 Close メソッドで閉じられることはないため、
》 フォームがアプリケーションで不要になった場合は、
》 そのフォームの Dispose メソッドを呼び出す必要があります。
> If dr.Equals(Windows.Forms.DialogResult.OK) Then
Equals メソッドではなく、= 演算子を使いましょう。
Equals メソッドの場合、引数の型が Object なので、
コンパイル時に型判定が行われません。処理結果は同一ですが、
タイプセーフを保証するためにも、= を使った方が望ましいかと。
> このあとにDispose等しても効果なしでした。
・ダイアログ内で、Control.Add / Remove を動的に行っていますか?
→ Controls に登録されているものは、フォームと一緒に Dispose されますが、
自分で Remove した場合は、削除された Contol を手動で Dispose する必要があります。
・ダイアログ内で、Component を利用していますか? (Timer など)
→ デザイナで貼り付けた場合は、自動的に Container に登録されるため、
最後にはフォームと一緒に Dispose されますが、components に
登録していない場合には、自分で Dispose する必要があります。
|