Установите для свойств 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
событие происходит? Это, кажется, не очень хорошая практика для меня.