C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

MdiWindowListItemとVisibleプロパティ


(過去ログ 90 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■54028 / inTopicNo.1)  MdiWindowListItemとVisibleプロパティ
  
□投稿者/ h0821 (1回)-(2010/10/03(Sun) 01:37:25)

分類:[VB.NET/VB2005 以降] 

2010/10/03(Sun) 01:37:56 編集(投稿者)

こんばんは。
現在MDIでアプリを開発しているのですが、解決できない問題が出てきたので質問させて下さい。

親フォームに存在するMenuStripのMdiWindowListItemプロパティに、ToolStripMenuItemを設定しています。
子フォームはFormクラスを継承し、FormClosingイベントハンドラを以下のように記述しています。

Private Sub ChildForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Me.Visible = False
e.Cancel = True
End Sub

また、親フォームに存在するCheckBoxのCheckedプロパティと、子フォームのVisibleプロパティをバインドしています。
全体として、子フォームの生成、設定、表示のコードは以下のように、親フォームのLoadイベントハンドラ内で記述されています。

Private Sub ParentForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim child As New ChildForm()
child.MdiParent = Me
CheckBox.DataBindings.Add(New Binding("Checked", child, "Visible", True, DataSourceUpdateMode.OnPropertyChanged))
child.Visible = True
End Sub

この状態で親フォームを起動し、CheckBoxで子フォームの表示を切り替えると、それに連動してMdiWindowListItemも適切に変化します。(子フォームが表示されていればMdiWindowListItemに表示され、表示されていなければMdiWindowListItemにも表示されない)
ただ子フォームの"×"ボタンで子フォームを閉じると、その後CheckBoxで子フォームを再表示しても、MdiWindowListItemに表示されません。
FormClosingイベントハンドラの内容を考えると、"×"ボタン、CheckBox、どちらで操作した場合も同じ結果になると思うのですが、何が異なるのでしょうか?
MdiParentプロパティの設定が原因かとも思い、子フォームのVisibleChangedイベントハンドラやLoadイベントハンドラで親フォームを設定してみましたが、解決しませんでした。

何かご存じの方がいらっしゃれば、お教え下さい。よろしくお願いします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -