- - PR -
VB.NETの親フォームから子フォームの作成に関して
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-10 02:37
ApplicationContextを継承したクラスを作成し、
Application.Runメソッドの引数にそのインスタンスを渡します。 終了するにはフォームの終了ボタンなどでApplcation.ExitThread()(又はExit())を呼び出します。
詳しくはMSDNライブラリを読んでください。 | ||||
|
投稿日時: 2006-04-10 02:49
ひとまず、過去ログのコードを参考にして
コードを書いてみました。 #コードSTART-------------------------- Imports System Imports System.Drawing Imports System.Windows.Forms Class MyApplicationContext Inherits ApplicationContext Private form1 As Form1 Private form2 As Form2 Private Sub New() form1 = New Form1 AddHandler form1.Closed, AddressOf OnFormClosed form1.Show End Sub Private Sub OnFormClosed(ByVal sender As Object, ByVal e As EventArgs) If TypeOf sender Is Form1 Then form2 = New Form2 AddHandler form2.Closed, AddressOf OnFormClosed form2.Show Else If TypeOf sender Is Form2 Then form1 = New MainForm AddHandler form1.Closed, AddressOf OnFormClosed form1.Show End If End If End Sub <STAThread()> _ Shared Sub Main() Dim context As MyApplicationContext = New MyApplicationContext Application.Run(context) End Sub End Class #コードEND-------------------------- とりあえず ログイン画面→メインメニュー(ログイン画面閉じる) は、動作の確認がとれました。 ただ、わかるとおもいますが、 ログイン→メニュー→ログイン→メニュー となり、画面を終了させることができません;;; 回避する方法があるのでしょうか? | ||||
|
投稿日時: 2006-04-10 02:59
>うにくまさん
あぅう。行き違いの投稿になってしまいました;; 返信ありがとうございます。 そのような方法もあるのですね。。Moduleって何だ? って感じですが、勉強してみます。 | ||||
|
投稿日時: 2006-04-10 09:15
C# 的に言えば、StandardModuleAttribute がついているクラスです。 普通のクラスでも、Main (エントリ ポイント) が Shared メソッドであれば問題ありません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-11 00:06
皆さんのお力添えでClosedイベントを使用して
ログイン→メニュー→ログイン はできました。ありがとうございました。 最終的には、ログイン画面の、閉じるボタンでExitすることで 正常に終了させることができました。 ただ、画面「×」ボタンで画面を閉じようとしても Closedイベントが走ってしまうらしく、予期せぬ画面遷移 になってしまいます。 ログイン(画面×ボタンによるClose)→メニュー画面 とりあえず、ログインボタン押下時のみ、DialogResultに値(OK)を設定 して、値が設定されている場合のみShowを行い、それ以外はExitを することで回避しているのですが、他にも振り分ける?方法は あるのでしょうか? 聞いてばかりで申し訳ありませんが、よろしくお願いします。 | ||||
|
投稿日時: 2006-04-11 01:54
Code で実行された Close かどうかを判別する方法はあるのですが、現状が最も賢明だと思います。 でも、DialogResult.OK は意味合い的におかしいかもしれません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-11 19:51
>じゃんぬねっとさん
たびたびの回答ありがとうございます。 一応WndProcというものを見つけて実施確認は できましたが、今回はこの方法でいきたいと 重います。 DialogResult.OKに関してはYESとか、値の判別のみ なんで、Ignoreとかでもいいのかな?と思っていたんで 判断できればなんでもいいかな?と。 人が見たら意味がわからなくなりそうですが;; | ||||
|
投稿日時: 2006-04-11 22:44
既に解決していらっしゃるようなので余計な話ですが、私はこんな感でやっていました。
質問者様が解決されたように1箇所で制御したほうが良いのですかね。 |