はじめまして、よろしくお願いします。
VB2008でカレンダーを作っています。Group1からGroup12(1月から12月の意味)それぞれのGroupには42個(日から土まで7×6週)あり、それぞれ
Group1のLabelは1から42、Group2のLabelは43から84・・以下同じように
Group12のLabelは463から504まであります。そのLabelをダブルクリックした時のLabel.Nameを取得したいと思います。
方法がわかりませんので、よろしくお願いします。
DoubleClick イベントの sender 引数に、ダブルクリックされたラベルが渡されています。
2008 であれば、イベント引数の sender を As Object から As Label に変更すれば、引数 sender を使って判断できるかと思います。
イベント引数を修正したくない場合には、引数はそのままにしておいて、
イベント処理の中で
Dim lbl As Label = DirectCast(sender, Label)
のように型変換すれば、lbl.Text や lbl.Name にアクセスできます。
もし、個別の DoubleClick イベントを多数用意するのが大変なのであれば
AddHandler を使って動的に割り当ててしまうのも良いでしょう。
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
For Each lbl In GroupBox1.Controls.OfType(Of Label)()
AddHandler lbl.DoubleClick, AddressOf DayLabels_DoubleClck
Next
For Each lbl In GroupBox2.Controls.OfType(Of Label)()
AddHandler lbl.DoubleClick, AddressOf DayLabels_DoubleClck
Next
End Sub
Sub DayLabels_DoubleClck(sender As Object, e As EventArgs)
Dim lbl As Label = DirectCast(sender, Label)
MsgBox(lbl.Name & " - " & lbl.Text)
End Sub
End Class
早速のご指導ありがとうございました。
提示頂いたコードで問題は解決しました。
これで自作の年間カレンダーが出来ました。
日付をクリックすると休日、稼働を変更できるようになりました。
休日をクリックすると稼働になり、稼働をクリックすると休日に
なるようにできました。
ツイート | ![]() |