0

vb 2010をクリックしたばかりのオブジェクトの名前を知る必要があります。DirectCast(sender、Control).IDで実行できますが、これを実行する必要があるのは2008であり、.IDは2008に存在しません。

私はの同等物が必要です

lblPatient.Text = DirectCast(sender, Control).ID

'vb2010ビジュアルWeb開発者で書かれました

vb2008の場合

コード

    Imports System.Data.SqlClient
Imports System.Data
Public Class FormRm3A
    Dim Labels(40) As Label
    Dim X As Integer
    Dim Y As Integer
    Private Sub FormArrayTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim i As Integer

        i = 1
        For Me.Y = 1 To 5
            For Me.X = 1 To 8
                'creates new textbox
                Labels(i) = New Label()
                'set its properties
                Labels(i).Width = 50
                Labels(i).Height = 35
                Labels(i).Left = X * 49
                Labels(i).Top = 30 + (Y * 34)
                Labels(i).BorderStyle = BorderStyle.FixedSingle
                'add control to current form
                Me.Controls.Add(Labels(i))
                If Clicky = True Then
                    AddHandler Labels(i).Click, AddressOf Label1_Click
                End If
                i = i + 1
            Next X
        Next Y

        Dim con As New SqlConnection
        Dim cmd As New SqlCommand
        Dim Subject As String
        Dim StaffInitials As String
        For Session = 1 To 40
            Try
                con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("RoomBookingSystem.My.MySettings.Database1ConnectionString1").ConnectionString
                Dim SessionParm As New SqlParameter("Session", Session)
                SessionParm.Direction = ParameterDirection.Input
                con.Open()
                cmd.Connection = con
                cmd.Parameters.Add(SessionParm)
                cmd.CommandText = "SELECT Subject, StaffInitials FROM PermanantBooking WHERE (Week = 'A') AND(Room = 'Rm3') AND (Session = @Session)"
                Dim lrd As SqlDataReader = cmd.ExecuteReader()
                While lrd.Read()

                    Subject = Convert.ToString((lrd("Subject").trim))
                    StaffInitials = Convert.ToString((lrd("StaffInitials").trim))

                    Labels(Session).Text = Subject & "" & vbNewLine & StaffInitials
                End While
                'Catch ex As Exception
                ' MsgBox("" & ex.Message)
                'here if there is an error it will go here (can use Msgbox or lable)
            Finally
                cmd.Parameters.Clear()
                con.Close()
            End Try
        Next
    End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim objectID As String
    objectID = DirectCast(sender, Control).ToString
    Day = 
    Period = X
    FormMakeBookingDetails.Show()
    Me.Hide()
End Sub
End Class
4

1 に答える 1

0

ASP.NET 3.5にはすでにこのプロパティがあります(実際にControl.Idは1.1以降に存在します))。したがって、コードは問題なく機能するはずです。

完全なコードと例外を表示できますか?

編集

ビジュアルWeb開発者を使用しているとおっしゃっていたので、ASP.NETを使用していると誤って想定しました。実際には、Winformsを使用しています。IdASP.NETとは異なり、Winformsにはプロパティはありません。Name代わりにプロパティを使用したい場合があります(1.1以降で使用可能)。

于 2012-12-10T11:45:19.277 に答える