使复选框将多行文本放入标签中

时间:2013-03-28 00:41:11

标签: vb.net button label

所以我有4个复选框,如果其中一个被选中,我想将该文本放入标签中。

我的问题是,当选中一个框时,它只在标签中有该文本,而不是其他已检查的文本。我希望它为每个框检查一个新行,以便将新行文本放入标签中。

如何让程序通过复选框,如果选中它们,请将该文本放入标签中,然后检查下一个框,开始换行并将该文本放在那里?

点击按钮点击事件。

3 个答案:

答案 0 :(得分:2)

快速而肮脏,但如果我明白你的要求,这应该有效。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Label1.Text = ""

    If (CheckBox1.Checked) Then
        Label1.Text &= CheckBox1.Text & vbCrLf
    End If

    If (CheckBox2.Checked) Then
        Label1.Text &= CheckBox2.Text & vbCrLf
    End If

    If (CheckBox3.Checked) Then
        Label1.Text &= CheckBox3.Text & vbCrLf
    End If

    If (CheckBox4.Checked) Then
        Label1.Text &= CheckBox4.Text & vbCrLf
    End If

    End Sub

答案 1 :(得分:0)

将所有CheckBox es放在同一个容器中。在此示例中,它们都包含在Panel1中。这将获取已检查的Text es的所有CheckBox属性,并将Text放入Label1.Text。如果未选择任何内容,则抛出Exception(Sequence不包含任何元素)。

Try
    Label1.Text = Panel1.Controls.OfType(Of CheckBox). _
        Where(Function(arg) arg.Checked). _
        Select(Function(arg) arg.Text). _
        Aggregate(Function(aggregate, nextItem) aggregate & Environment.NewLine & nextItem)
Catch ex As Exception
    Label1.Text = "Nothing selected"
End Try

答案 2 :(得分:0)

试试这段代码,

[注意:使用IDE进行测试]

 Private Sub Common_Cheked_Change_Handler(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles _
 CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, _
 CheckBox3.CheckedChanged, CheckBox4.CheckedChanged

        Label1.Text = String.Empty

        Label1.Text = If(CheckBox1.Checked = True, CheckBox1.Text & vbCrLf, String.Empty) & _
         If(CheckBox2.Checked = True, CheckBox2.Text & vbCrLf, String.Empty) & _
          If(CheckBox3.Checked = True, CheckBox3.Text & vbCrLf, String.Empty) & _
           If(CheckBox4.Checked = True, CheckBox4.Text, String.Empty)

 End Sub