0

我需要知道我刚刚在 vb 2010 上单击的对象的名称,我可以使用 DirectCast(sender, Control).ID 来完成,但是我需要这样做的是 2008 年,而 .ID 在 2008 年不存在

我需要等效的

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

'写在 vb 2010 视觉网络开发者中

对于VB 2008

代码

    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。IdWinforms中没有与 ASP.NET 不同的属性。也许您想改用该Name属性(自 1.1 起可用)。

于 2012-12-10T11:45:19.277 回答