【发布时间】:2013-03-28 14:01:59
【问题描述】:
所以我有 4 个复选框,如果其中一个被选中,我想将该文本放入标签中。
我的问题是,当检查一个框时,它只是在标签中具有该文本,而不是其他已检查的文本。我希望它为每个选中的框都有一个新行,以便将新行文本放入标签中。
我怎样才能让程序通过复选框,如果它们被选中,则将该文本放入标签中,并为选中的下一个框开始一个新行并将该文本放在那里?
置于按钮点击事件之下。
【问题讨论】:
所以我有 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
【讨论】:
将所有CheckBoxes 放在同一个容器中。在此示例中,它们都包含在 Panel1 中。这将获取检查的CheckBoxes 的所有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
【讨论】: