DirectCast(发件人,控制).ID在Vb 2008中不起作用

时间:2012-12-10 11:41:49

标签: vb.net winforms visual-studio-2008

我需要知道我刚刚点击vb 2010的对象的名称我可以使用DirectCast(发件人,控制).ID,但是我需要这样做是2008年而.ID不存在在2008年

我需要

的等价物
lblPatient.Text = DirectCast(sender, Control).ID

'写在vb 2010 visual web deveoper

对于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

1 个答案:

答案 0 :(得分:0)

ASP.NET 3.5已经有this property(自1.1()以来实际存在Control.Id),因此您的代码应该没有问题。

你能展示完整的代码和例外吗?

修改

既然你已经提到过你正在使用visual web deveoper,我错误地认为你使用的是ASP.NET。实际上你正在使用Winforms。与ASP.NET不同,Winforms中没有Id属性。也许您想使用Name property代替(自1.1以来可用)。