始めまして、こんにちわ。みるるんと申します。よろしくお願いします。
Formの遷移の仕方が理解できません。
1つめのFormに入力された値を2つめのFormに表示しようと考えています。
Form1とForm2を作成し、Form1には、名前を入れるtextBox1とForm2に遷移するための、Button1を配置しました。そして、次に、Form2では、Form1のtextBox1に入力された値を表示するためのLabel2を配置しました。
Form1のButton1が押された場合、Form1を閉じて、Form2だけを表示させたいのですが、可能でしょうか?
また、別のFormからもForm1で入力された値を取得しようと思い、propetyを作成してみたいのですが、うまくいきません。何か方法は、ないでしょうか?
まだ、初心者なので、理解できないことが多く苦しんでいます。もしよければ、教えていただけないでしょうか?
VB.NETならこれで可能だと思います。
Dim frm As New Form2()
Me.Visible = False
frm.label2.Text = TextBox1.Text
VB.NETなら
モジュールレベルでフォームオブジェクトを全てグローバルに
宣言いてしまいましょう。
Module Module1
Public f1 As Form1
Public f2 As Form2
Public f3 As Form3
End Module
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
f1 = Me
Dim f2 As New Form2
Dim f3 As New Form3
f2.Show()
f3.Show()
End Sub
とすれば全てのフォームから見えます。
Form1以外ののフォームから
f1.Close()
だけはしないでね。
甲羅さんありがとうございます。
実行してみたのですが、frm2が表示されません。
'Form2のインスタンス生成
dim frm As New Form2()
'Form1の非表示
me.Visible=False
'Form2のlabel1のTextプロパティーにForm1のTextBox1のTextプロパティーを代入
frm.label1.Text=TextBox1.Text
'追加コード↓
'
frm.show()
こうすると、Form2が最小化されて表示されます。で、更に、
frm.WindowState = FormWindowState.Maximized
を記述しましたが、最大化されず。
Form2のWindowStateのプロパティーをMaximizedに設定したら、成功しました。
Visible属性をFalseにするとForm1は、破棄されず、Backにありますよね?
サーバーサイドのようにSessionみたいな便利な道具は、ないのでしょうか?
初心者で申し訳ございません。よろしくお願いします。
上のコード間違えました訂正します
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
f1 = Me
f2 = New Form2
f3 = New Form3
f2.Show()
f3.Show()
End Sub
ねろさんありがとうございました。
確かに外部宣言として、Moduleを使用し、Form1を止めた状態にしておくと、参照が可能ですね。ありがとうございました。応用して利用していきたいと思います。
詳しくこのアプリケーションをいうと、アプリケーションに認証機能をつけようと思っています。でも、メイン画面をメニュー画面にしたいと思っているのですが、・・・・良い方法が思いつかなくて、仕方なく最初の認証画面をメイン画面として作っています。
ASP.NETなら、Windows認証とかあって、簡単に構築できるのですが、Windowsアプリケーションの場合は、どのようにしたら良いのかわかりません。
もし、何か、良い方法があれば、教えてください。
認証ですか、色々方法は有ると思いますが、認証のフォームは起動
フォームでは無いほうがいいでしょう。レジストリーなどで認証済
みの場合は認証の画面が立ち上がらない場合があるからです。
Form2を認証のフォームとするとして、Form2をモーダルに表示する方法が有ります。
f1 = Me
f2 = New Form2
f2.ShowDialog()
とすればForm2がモーダルのフォームとして立ち上がりForm2が閉じるまでForm1は
表示されません。
また
f1 = Me
f2 = New Form2
f2.Show()
f2.Owner = Me
とすれば常にForm2はForm1より手前に表示されForm1が選択されたとき
Form2が隠れてしまうことがありません。
ツイート | ![]() |