Formの遷移について


みるるん  2003-12-03 00:59:06  No: 110400

始めまして、こんにちわ。みるるんと申します。よろしくお願いします。

Formの遷移の仕方が理解できません。

1つめのFormに入力された値を2つめのFormに表示しようと考えています。

Form1とForm2を作成し、Form1には、名前を入れるtextBox1とForm2に遷移するための、Button1を配置しました。そして、次に、Form2では、Form1のtextBox1に入力された値を表示するためのLabel2を配置しました。

Form1のButton1が押された場合、Form1を閉じて、Form2だけを表示させたいのですが、可能でしょうか?

また、別のFormからもForm1で入力された値を取得しようと思い、propetyを作成してみたいのですが、うまくいきません。何か方法は、ないでしょうか?
まだ、初心者なので、理解できないことが多く苦しんでいます。もしよければ、教えていただけないでしょうか?


甲羅  2003-12-03 01:13:02  No: 110401

VB.NETならこれで可能だと思います。

 Dim frm As New Form2()
        Me.Visible = False
        frm.label2.Text = TextBox1.Text


ねろ  2003-12-03 02:14:33  No: 110402

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()
だけはしないでね。


みるるん  2003-12-03 02:24:01  No: 110403

甲羅さんありがとうございます。

実行してみたのですが、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みたいな便利な道具は、ないのでしょうか?

初心者で申し訳ございません。よろしくお願いします。


ねろ  2003-12-03 02:37:24  No: 110404

上のコード間違えました訂正します
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


みるるん  2003-12-03 02:42:24  No: 110405

ねろさんありがとうございました。

確かに外部宣言として、Moduleを使用し、Form1を止めた状態にしておくと、参照が可能ですね。ありがとうございました。応用して利用していきたいと思います。

詳しくこのアプリケーションをいうと、アプリケーションに認証機能をつけようと思っています。でも、メイン画面をメニュー画面にしたいと思っているのですが、・・・・良い方法が思いつかなくて、仕方なく最初の認証画面をメイン画面として作っています。

ASP.NETなら、Windows認証とかあって、簡単に構築できるのですが、Windowsアプリケーションの場合は、どのようにしたら良いのかわかりません。
もし、何か、良い方法があれば、教えてください。


ねろ  2003-12-03 05:50:14  No: 110406

認証ですか、色々方法は有ると思いますが、認証のフォームは起動
フォームでは無いほうがいいでしょう。レジストリーなどで認証済
みの場合は認証の画面が立ち上がらない場合があるからです。
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が隠れてしまうことがありません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加