0

LinkLabelフォームに動的に追加した があります。Myは aをチェック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ます。

4

1 に答える 1

0

この行

'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

linkLabel1LinkLabel1を動的に宣言するため、存在しないと言います

'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_Clickyour を使用する必要があります。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また、副次的な質問として、イベントが発生するたびにリンク ラベルを複数回動的に追加する必要がありますか? これは私にはあまり良い習慣ではないようです。

于 2016-01-15T02:09:20.897 に答える