Labelをクリックした番号を求める

解決


Tomi  2013-05-26 15:39:34  No: 143463  IP: 192.*.*.*

はじめまして、よろしくお願いします。
VB2008でカレンダーを作っています。Group1からGroup12(1月から12月の意味)それぞれのGroupには42個(日から土まで7×6週)あり、それぞれ
Group1のLabelは1から42、Group2のLabelは43から84・・以下同じように
Group12のLabelは463から504まであります。そのLabelをダブルクリックした時のLabel.Nameを取得したいと思います。
  方法がわかりませんので、よろしくお願いします。

編集 削除
魔界の仮面弁士  2013-05-27 09:10:12  No: 143464  IP: 192.*.*.*

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

編集 削除
Tomi  2013-05-27 17:39:11  No: 143465  IP: 192.*.*.*

早速のご指導ありがとうございました。
提示頂いたコードで問題は解決しました。
  これで自作の年間カレンダーが出来ました。
  日付をクリックすると休日、稼働を変更できるようになりました。
  休日をクリックすると稼働になり、稼働をクリックすると休日に
  なるようにできました。

編集 削除