ユーザー コントロールを各タブに動的に追加するタブ付きコントロールと、フォームの下部にある StatusStrip を持つフォームを作成しました。アプリが起動すると、セキュリティに基づいてユーザー コントロールがタブに読み込まれ、少なくとも 1 つのタブが読み込まれます。StatusStrip には、2 つの ToolStripComboBox、2 つの ToolStripButton、1 つの ToolStripLabel、および 1 つの ToolStripStatusLabel があります。すべてが正常にロードされ、機能します。
ユーザーが 2 つのボタンのいずれかを押すと、MonthCalendar ポップアップが表示されるようになりました。これを行うために使用するコードは次のとおりです。
If IsNothing(theCal) Then
theCal = New MonthCalendar
AddHandler theCal.DateSelected, AddressOf theCalDateSelected
AddHandler theCal.LostFocus, AddressOf theCalLostFocus
AddHandler theCal.GotFocus, AddressOf theCalLostFocus
theCal.Parent = Me
theCal.Top = StatusStripMain.Top - theCal.Height
theCal.Left = ComboBoxAvailableLegDay.Bounds.X
theCal.Anchor = AnchorStyles.Bottom + AnchorStyles.Left
theCal.Show()
theCal.BringToFront()
theCal.Focus()
Else
Me.Controls.Remove(theCal)
theCal = Nothing
End If
theCal は、フォームのクラスの上部で Protected として定義されています。したがって、ボタンを押すと MonthCalendar が作成され、存在しない場合は正しく配置され、存在する場合は削除されます。これは問題なく動作します。
私の問題は、theCal が GotFocus または LostFocus を起動しないことです。次のように定義された theCalLostFocus プロシージャを取得しましたが、例外は発生しません。スローにブレークポイントを設定できますが、コードがそのポイントに到達することはありません。
Private Sub theCalLostFocus(ByVal sender As Object, ByVal e As EventArgs)
Throw New NotImplementedException
End Sub
Cal の日付をクリックすると、CalDateSelected プロシージャが呼び出されますが、フォームの他の領域をクリックしても、CalLostFocus は呼び出されません。ユーザーは日付を選択したくない場合があり、ボタンを押して theCal を削除する必要がないようにするため、フォーカスを失ったときに theCal を削除できるようにしたいと考えています。なぜこれが起こっているのか誰にも分かりますか?解決策はありますか?
ありがとう。-NCGrimbo