- PR -

スタートアップフォームの参照方法

投稿者投稿内容
Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2004-07-27 20:17
Mickyでございます。

2画面限定なら、コントロールクラスとか言ってないで、
Qooさん他みなさまがおっしゃっているように、
Form2に単純にForm1のインスタンスを
持たせてコントロールした方がよさそうですね。(^^;

Qooさんの様にプロパティ形式で渡すか、
最初に、コンストラクタの引数として
渡しちゃってもいいかも…です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-28 08:02
 色々書いていたのですが、

1.自オブジェクトをMeで参照できることはご存じであること
2.クラスとオブジェクトの違いを理解されているようであること
3.HideやShowなど、必要なメソッドはご存じであること

から、「"別"フォームにフィールドを作って、格納すればよい」ということを、『どうにかして「別フォーム」に憶えさせるしかありません。』と表現してみました。


 で、今思い出したのですが、下のWWWのリンクから私のウェブページに行くと、フォーム制御のサンプルが置いてあったりします。「他のDLLにあるフォームを表示する」をクリックしてください。
 このサンプルでは親(スタートアップフォーム)が子(別フォーム)を制御していますが、子を制御している所を「親を制御」するように子にコピーしてやれば、お望みのことができるでしょう。実装についてはQooさんの投稿 2004-07-27 18:28 を参考にしてください。
まさ1973
会議室デビュー日: 2004/07/27
投稿数: 11
投稿日時: 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/01/16
投稿数: 347
投稿日時: 2004-07-28 10:26
>スタートアップフォームの完全非表示

最初に投稿した時点から今まで作成したロジックでそれぞれ何ができて
何ができないか1度まとめてみてはどうでしょうか?

組み合わせで何とかなるかもしれませんよ

あみゅせる
常連さん
会議室デビュー日: 2004/07/08
投稿数: 33
お住まい・勤務地: 神奈川県
投稿日時: 2004-07-28 10:27
こんにちは。

引用:

なにせVB.NET初心者なものですからもっといい組み方がありましたらまたご指摘ください。
タスクバーの件やスタートアップフォームの完全非表示はどうしようもないですか?(^ ^!)


フォームを消したいのであれば、
スタートアップを「Sub Main」にする手もありますよ。

_________________
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2004-07-28 10:31
こんにちは。

タスクバーの表示について、
Form に Show〜 プロパティというのがあったような。。。

スタートアップフォームには無効でしたっけ。。。

ほとんど、ひとり言ですが。(^^;
まさ1973
会議室デビュー日: 2004/07/27
投稿数: 11
投稿日時: 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

みなさまのご協力のおかげで解決できました。
みなさまの考えさせるヒントの出し方には関心します(^ ^)。
また、質問させていただくことがあると思いますがどうぞよろしくお願いします<(_ _)>。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)