vb.net - 更改复选框时预览不同的文本
问题描述
我没有找到任何解决问题的方法,也许是因为我无法正确表达我真正想做的事情。
基本上,我有 4 个CheckBoxes
,当其中一些被选中时,我想在TextBox
多行中添加一些文本。
例子:
If checkbox1.checked = true then
Textbox1.text = text1
Elseif checkbox1.checked = true and checkbox2.checked = true then
Textbox1.text = text1 & vbCrLf & text2
Elseif checkbox1.checked = true and checkbox2.checked = true and checkbox3.checked = true then
Textbox1.text = text1 & vbCrLf & text2 & vbCrLf & text3
Elseif checkbox1.checked = true and checkbox3.checked = true then
textbox1.text = text1 & vbCrLf & text3
End if
我知道代码中有一个逻辑错误(如果我CheckBoxes
检查了 4 个,它将只显示text1
而不是text1 & vbCrLf & text2 & vbCrLf & text3 & vbCrLf & text4
),但我不知道如何以另一种方式表达我的问题。
CheckBoxes
如果我检查我想查看的第一个和第三个,text1
并且text3
相应地,我是否必须对我可以检查的每一种可能的方式进行硬编码,CheckBoxes
或者是否有一种方法可以自动在新行上添加我需要的文本?
解决方案
我建议您首先将与每个对应的文本分配给 thatCheckBox
的Tag
属性CheckBox
。你可以在设计器中做到这一点。然后,您可以获取复选框列表,获取每个复选框的文本并将它们连接在一起,例如
Dim checkBoxes = {CheckBox1, CheckBox2, CheckBox3, CheckBox4}
TextBox1.Text = String.Join(Environment.NewLine,
checkBoxes.Where(Function(cb) cb.Checked).
Select(Function(cb) CStr(cb.Tag)))
这将创建一个 all 列表,将CheckBoxes
其过滤为仅选中的那些,获取每个文本的文本,然后String
使用换行符作为分隔符将这些子字符串连接成一个。对于那些更喜欢 LINQ 查询语法而不是函数语法的人:
Dim checkBoxes = {CheckBox1, CheckBox2, CheckBox3, CheckBox4}
TextBox1.Text = String.Join(Environment.NewLine,
From cb In checkBoxes
Where cb.Checked
Select CStr(cb.Tag))
如果您不想走 LINQ 路线,那么您可以使用更传统的循环:
Dim checkBoxes = {CheckBox1, CheckBox2, CheckBox3, CheckBox4}
Dim substrings As New List(Of String)
For Each cb In checkBoxes
If cb.Checked Then
substrings.Add(CStr(cb.Tag))
End If
Next
TextBox1.Text = String.Join(Environment.NewLine, substrings)
推荐阅读
- .net - 将 Elasticsearch 更新到 7.0 后的异常
- javascript - 如何让 chrome/browser 了解 javascript 代码已更改?
- java - 什么正在终止我的 Java ExecutorService
- java - 是否可以将 ARGB 背景颜色设置为 IText PDF 单元格?
- python - 如何在删除 NA 的同时获取重复值的索引?结果索引小于原始数据框
- python - 如何使用 python 和 selenium 抓取弹出窗口
- java - 为什么控制器代码没有在 Spring Boot 应用程序中执行
- angular - Angular + Express,GET 请求不起作用
- postgresql - 从字符串postgres的jsonb列表中获取第一个元素
- webview - 如何解决:从 vscode webview 扩展导入包时出现“未定义导出”和“未定义要求”错误