- - PR -
操作中のFORMから既に開かれている別FORMの操作(Shared)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-27 17:30
【環境】
Windows 2000 Professional VB.NET SQL SERVER2000 VB.NET歴がまだ浅いのでよろしくお願いします。 現在操作中の画面(フォーム)から既に開かれている他のフォームを操作するために以下のようにしてみましたが、なかなかうまくいきません。何かいい方法はないでしょうか?よろしくお願いします。 '画面制御共通クラスを作成する Public Class SET_FORM Public Shared form1 As New FORM_1 '// 画面1 end class 'メイン画面から画面1を開く Dim setForm as new SET_FORM setForm.form1.show() '別の画面2のボタンから開かれている画面1を閉じる Dim setForm as new SET_FORM setForm.form1.close() *画面2から画面1を無事に閉じることはできたのですが、また同じ方法でメイン画面から画面1を開こうとすると「破棄されたオブジェクトが見つかりません」と怒られたり、「"CheckBox" という名前の、破棄されたオブジェクトにアクセスできません。」など、その都度エラー内容が違います。どう対処したらよろしいでしょうか?また、Sharedを使わないで他画面を操作する良い方法がありますでしょうか?よろしくお願いします。 |
|
投稿日時: 2004-12-27 18:01
closeメソッドを使うとFormオブジェクトは破棄されます。
同じオブジェクトを使った再表示をしたいなら、破棄されない手段を講じる 必要があります。 簡単なのはcloseのかわりにhideメソッドを使うことです。 http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsFormClassCloseTopic.asp _________________ たつごろー codeseek こみゅぷらす |
|
投稿日時: 2004-12-27 18:30
教えていただいた参照URLみて納得いたしました。hideメソッドでなんとか対処できるか検討したみたいと思います。他画面操作は、ただ閉じる作業だけなく、値渡しもあるのでhideでうまく制御できるか試してみます。たつごろーさん、有難うございました。
|
|
投稿日時: 2004-12-27 20:51
Closingイベントで
e.Cancel = True this.Hide() でどうですか? |
|
投稿日時: 2004-12-28 18:43
Kazukiさん、返信遅れまして申し訳ないです。 以下のように閉じたい画面でcloseイベントに設定すると、変数「e」にCancelのプロパティがない、とコンパイルエラーがでます。eはSystem.object型だと思うのですが、また違った意味でeと書かれたのでしょうか? Private Sub G_FORM_CLOSE(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed e.Cancel = True Me.Hide() end sub ---------------------------------------------- Closingイベントで e.Cancel = True this.Hide() でどうですか? |
|
投稿日時: 2004-12-28 19:05
↑CosingイベントのことをCloseイベントと勘違いしていました。申し訳ないです。Closingイベントで挑戦してみます。
|
1