Установите для свойств LinkLabel1.Enabled значение false (vb.net)

У меня есть LinkLabel что я добавил динамически в моей форме. мой LinkLabel будет отображаться только когда CheckBox проверено. Я использовал это LinkLabel добавить TextBox в моей форме и пользователь может добавить только 5 максимум TextBox, После того, как он достигнет своего максимума, то LinkLabel будет отключен (но еще не добавлен в мою кодировку).

Вот моя кодировка, которую я сейчас использую.

'This is my CheckBox
Private Sub CheckBoxOthers_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxOthers.CheckedChanged
    If CheckBoxOthers.Checked = True Then
        PanelOthers.Visible = True 'My TextBox and LinkLabel are inside a Panel

        Dim count As Integer = PanelOthers.Controls.OfType(Of Label)().ToList().Count
        Dim textbox As New TextBox()
        Dim linklabel1 As New LinkLabel()

        count = PanelOthers.Controls.OfType(Of TextBox)().ToList().Count
        textbox.Location = New System.Drawing.Point(15, 40 * count)
        textbox.Size = New System.Drawing.Size(172, 20)
        textbox.Name = "textbox_" & (count + 1)
        AddHandler textbox.TextChanged, AddressOf TextBox_Changed
        PanelOthers.Controls.Add(textbox)

        'Adding LinkLabel dynamically
        linklabel1.Name = "lnkAddSubj"
        linklabel1.Text = "Add Subject"
        linklabel1.Location = New Point(300, 3)
        AddHandler linklabel1.Click, AddressOf linklabel1_Click
        PanelOthers.Controls.Add(linklabel1)
    Else
        PanelOthers.Visible = False
        PanelOthers.Controls.Clear()
    End If
End Sub

Вот мой LinkLabel событие для добавления TextBox при нажатии, максимум в 5 раз, но я еще не добавил кодировку, чтобы установить предел

Private Sub linklabel1_Click(sender As Object, e As EventArgs)
    Dim count As Integer = PanelOthers.Controls.OfType(Of Label)().ToList().Count
    Dim textbox As New TextBox()

    count = PanelOthers.Controls.OfType(Of TextBox)().ToList().Count
    textbox.Location = New System.Drawing.Point(15, 40 * count)
    textbox.Size = New System.Drawing.Size(172, 20)
    textbox.Name = "textbox_" & (count + 1)
    AddHandler textbox.TextChanged, AddressOf TextBox_Changed
    PanelOthers.Controls.Add(textbox)

    'So here after LinkLabel clicked 5 times then my LinkLabel will be disabled and I'm trying to do like this but it said LinkLabel1 is not declared
    LinkLabel1.Enabled = False
End Sub

Как сделать LinkLabel свойства можно установить? Я могу написать событие Click, потому что я добавляю для него обработчик CheckBox событие.

1 ответ

Решение

Эта линия

'So here after LinkLabel clicked 5 times then my LinkLabel will be disabled and I'm trying to do like this but it said LinkLabel1 is not declared
LinkLabel1.Enabled = False

Говорит, что LinkLabel1 никогда не существует, потому что вы объявляете свой linkLabel1 динамически

'Adding LinkLabel dynamically
linklabel1.Name = "lnkAddSubj"
linklabel1.Text = "Add Subject"
linklabel1.Location = New Point(300, 3)
AddHandler linklabel1.Click, AddressOf linklabel1_Click
PanelOthers.Controls.Add(linklabel1)

в linklabel1_Click, вы должны использовать свой sender вместо. Примени это LinkLabel

Private Sub linklabel1_Click(sender As Object, e As EventArgs)
    Dim linkLbl As LinkLabel = sender 'do this
    Dim count As Integer = PanelOthers.Controls.OfType(Of Label)().ToList().Count
    Dim textbox As New TextBox()

    count = PanelOthers.Controls.OfType(Of TextBox)().ToList().Count
    textbox.Location = New System.Drawing.Point(15, 40 * count)
    textbox.Size = New System.Drawing.Size(172, 20)
    textbox.Name = "textbox_" & (count + 1)
    AddHandler textbox.TextChanged, AddressOf TextBox_Changed
    PanelOthers.Controls.Add(textbox)

    'So here after LinkLabel clicked 5 times then my LinkLabel will be disabled and I'm trying to do like this but it said LinkLabel1 is not declared
    'put if condition here to check if the textBox number already >= 5
    linkLbl.Enabled = False 'change this using the actual sender
End Sub    

Кроме того, в качестве дополнительного вопроса: вам нужно динамически добавлять ярлык ссылки несколько раз каждый раз CheckedChanged событие происходит? Это, кажется, не очень хорошая практика для меня.

Другие вопросы по тегам