我已经尝试过寻找解决问题的方法,但未找到一个,因为似乎每个人都比我的问题提前一两步。
我正在尝试从复选框列表中选择一个项目,而不是从中选择一个项目。
我知道要做的是在单击按钮并选中选中的选项后,使得结果事件触发,以便在已检查项目的标签中显示文本。
该程序基于装饰器模式,允许用户从一组3/4可检查选项中进行选择,当按下按钮时,将显示与基座末端标签中的那些项目相关的文本文本。目前,我所管理的只是让它在所选项目上一次一个,这与第一个例子类似。
例如,当选中名为Monitor的选项时,它将显示在标签中:
你正在买一台电脑和一台显示器。
如果有多个选中的项目,如监视器和键盘,那么它会说:
你得到一台电脑,一台显示器和一把键盘。
答案 0 :(得分:0)
根据新检查的项目值触发Label.Text
Label
事件时,您可以更改目标ItemCheck
的{{1}}属性。
示例强>
假设您有CheckedListBox
名称Label
,label1
名称CheckedListBox
和checkedListBox1
名称Form
,以下可能适用
Form1
示例输入
public class Form1 : Form
{
public Form1()
{
InitializeComponent();
label1.Text = "You are getting "; //Change the Text property of label1 to "You are getting "
checkedListBox1.ItemCheck += new ItemCheckEventHandler(checkedListBox1_ItemCheck); //Link the ItemCheck event of checkedListBox1 to checkedListBox1_ItemCheck; not required as long as you link the event through the designer
}
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked && e.CurrentValue == CheckState.Unchecked) //Continue if the new CheckState value of the item is changing to Checked
{
label1.Text += "a " + checkedListBox1.Items[e.Index].ToString() + ", "; //Append ("a " + the item's value + ", ") to the label1 Text property
}
else if (e.NewValue == CheckState.Unchecked && e.CurrentValue == CheckState.Checked) //Continue if the new CheckState value of the item is changing to Unchecked
{
label1.Text = label1.Text.Replace("a " + checkedListBox1.Items[e.Index].ToString() + ", ", ""); //Replace ("a " + the item's value + ", ") with an empty string and assign this value to the label1 Text property
}
}
}
样本输出
[x] Monitor
[x] Keyboard
[ ] Mouse
[x] Computer
谢谢, 我希望你觉得这很有帮助:)