- - PR -
スタートアップフォームの参照方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-07-27 20:17
Mickyでございます。
2画面限定なら、コントロールクラスとか言ってないで、 Qooさん他みなさまがおっしゃっているように、 Form2に単純にForm1のインスタンスを 持たせてコントロールした方がよさそうですね。(^^; Qooさんの様にプロパティ形式で渡すか、 最初に、コンストラクタの引数として 渡しちゃってもいいかも…です。 | ||||
|
投稿日時: 2004-07-28 08:02
色々書いていたのですが、
1.自オブジェクトをMeで参照できることはご存じであること 2.クラスとオブジェクトの違いを理解されているようであること 3.HideやShowなど、必要なメソッドはご存じであること から、「"別"フォームにフィールドを作って、格納すればよい」ということを、『どうにかして「別フォーム」に憶えさせるしかありません。』と表現してみました。 で、今思い出したのですが、下のWWWのリンクから私のウェブページに行くと、フォーム制御のサンプルが置いてあったりします。「他のDLLにあるフォームを表示する」をクリックしてください。 このサンプルでは親(スタートアップフォーム)が子(別フォーム)を制御していますが、子を制御している所を「親を制御」するように子にコピーしてやれば、お望みのことができるでしょう。実装についてはQooさんの投稿 2004-07-27 18:28 を参考にしてください。 | ||||
|
投稿日時: 2004-07-28 08:13
みなさん、いろいろアドバイスありがとうございます。
まさ1973です。 返信遅くなり申し訳ございません<(_ _)>。 みなさんのアドバイスをもとにして簡単に作ってみたところうまくいきました。 スタートアップフォームをForm1として Form2からForm3、Form4と移動して、Form3,4からForm2へ戻れるようにしてます。 Form2を再表示する際、Form2で入力された内容が正しく保持されていました。 以下、こんな感じです。 Public Class Form1 Private Sub Form1_Load fForm2.fForm1 = Me fForm2.Show() End Sub End Class Public Class Form2 Public fForm1 As Form1 Private Sub cmd次ページへ_Click fForm2.Visible = False Dim fForm3 As New Form3 fForm3.Show() End Sub End Class Public Class Form3 Private Sub cmd前ページへ_Click fForm2.Visible = True Me.Close() End Sub Private Sub cmd次ページへ_Click Dim fForm4 As New Form4 fForm4.Show() Me.Close() End Sub End Class Public Class Form4 Private Sub cmdForm2へ_Click fForm2.Visible = True Me.Close() End Sub End Class Module Module1 Public fForm2 As New Form2 End Module なにせVB.NET初心者なものですからもっといい組み方がありましたらまたご指摘ください。 タスクバーの件やスタートアップフォームの完全非表示はどうしようもないですか?(^ ^!) みなさまのご協力感謝致します。 | ||||
|
投稿日時: 2004-07-28 10:26
>スタートアップフォームの完全非表示
最初に投稿した時点から今まで作成したロジックでそれぞれ何ができて 何ができないか1度まとめてみてはどうでしょうか? 組み合わせで何とかなるかもしれませんよ | ||||
|
投稿日時: 2004-07-28 10:27
こんにちは。
フォームを消したいのであれば、 スタートアップを「Sub Main」にする手もありますよ。 _________________ | ||||
|
投稿日時: 2004-07-28 10:31
こんにちは。
タスクバーの表示について、 Form に Show〜 プロパティというのがあったような。。。 スタートアップフォームには無効でしたっけ。。。 ほとんど、ひとり言ですが。(^^; | ||||
|
投稿日時: 2004-07-29 02:57
お世話になります。
まさ1973です。 最初の投稿からの簡単に整理しますと 1. スタートアップフォームに指定したフォームを別フォームから参照する方法を質問 解決法1. スタートアップフォームの項目内容を別フォームのコントロールに保持して 再表示するときにその内容を書き戻す。 解決法2. スタートアップフォームにダミーフォームを指定し、 そのフォームから最初に表示したいフォームを表示する。 --> スタートアップから呼び出されるフォーム側にスタートアップフォームの変数を持たせて スタートアップフォームから表示する際に前に定義した変数に スタートアップフォーム(Me)を格納すれば スタートアップフォームの項目内容を保持することが可能になる。 2. 解決法2を実行しようとしたときにダミーフォームが表示される。 また、ダミーフォームのタスクがタスクバーに表示されるのを避けたい。 前の投稿でのプログラムリストの Form1クラスとModule1モジュールを 以下のように修正することにより ダミーフォームの非表示とダミーフォーム分のタスクバー非表示が実現 以下、修正箇所 Public Class Form1 Private Sub Form1_Load fForm2.fForm1 = Me fForm2.fForm1.ShowInTaskbar = False fForm2.fForm1.Visible = False fForm2.Show() End Sub End Class Module Module1 Public fForm2 As New Form2 Sub main() Dim fForm1 As New Form1 Application.Run(fForm1) End Sub End Module みなさまのご協力のおかげで解決できました。 みなさまの考えさせるヒントの出し方には関心します(^ ^)。 また、質問させていただくことがあると思いますがどうぞよろしくお願いします<(_ _)>。 ありがとうございました。 |