制作复选框将多行文本放入标签

问题描述:

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

我的问题是,当一个框被选中,它只是在标签中的文本,但没有其他的检查。我希望它为每个选中的框添加一行,以便将新行文本放入标签中。

我怎样才能让程序通过复选框,如果他们被选中将该文本放入一个标签,并选择下一个盒子开始一个新行并将该文本放在那里?

被置于按钮点击事件下。

快速和肮脏,但如果我明白你要求这个应该工作。

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 
+0

谢谢!但是vbCrLF是什么意思?用于学习海豚 – 2013-04-01 01:50:52

+0

vbCrLf是回车换行符。就像如果你想在字符串中缩进缩进,你需要使用vbTab。 Dim strHello As String =“Hello”&vbTab&“World!”。 – 2013-04-01 05:38:29

将您所有的CheckBox es放在同一个容器中。在这个例子中,它们都包含在Panel1之内。这将获得CheckBox es的所有Text属性,并将Text设置为Label1.Text。如果没有选择任何内容,则会引发Exception(序列不包含元素)。

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 

试试这个代码,

[注:测试与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