将列表框的选定项目显示在C#Windows窗体的消息框中

时间:2014-10-14 19:00:33

标签: c# visual-studio-2008 listbox checkboxlist

我可以在列表框中将多个选定项目显示在按钮单击的文本框中,但如何在消息框中显示相同的内容?我的意思是在消息框上显示第一项不是问题,而是同时显示多个项目。建议请...

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{

    Skill = checkedListBox1.SelectedItem.ToString();
    if (e.NewValue == CheckState.Checked)
    {
        listBox1.Items.Add(Skill);
    }
    else
    {
        listBox1.Items.Remove(Skill);
    }
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("You have selected following Skills : \n"+Skill, "Selected Skills",
    MessageBoxButtons.OK, MessageBoxIcon.Information);
}

3 个答案:

答案 0 :(得分:0)

您不会显示定义Skill的位置,但可能是该类的属性。您只需在Skill中初始化checkedListBox1_ItemCheck。如果选择已更改,则该值将过时(它不会反映现实)。

对代码的最短更改是在按钮处理程序中不使用Skill,而是从列表框中获取当前状态(如果您喜欢该样式,可能将其放在局部变量中)。

private void button1_Click(object sender, EventArgs e)
{
    var selectedSkills = checkedListBox1.SelectedItem.ToString();
    MessageBox.Show("You have selected following Skills : \n"+selectedSkills, "Selected Skills",
    MessageBoxButtons.OK, MessageBoxIcon.Information);
}

答案 1 :(得分:0)

看起来你要用最后一个要检查的值覆盖Skill。因此,我希望消息框始终显示与您单击的最后一项相关的Skill。因此,如果您想要显示所有这些内容,则需要使用Skill

之类的内容替换MessageBox.Show来电中的listBox1.Items.Cast<string>().Aggregate((o, n) => o.ToString() + "," + n.ToString())

*注意:将Cast<string>替换为任何类型的对象Skill

如:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    Skill = checkedListBox1.SelectedItem.ToString();

    if (e.NewValue == CheckState.Checked)
    {
        listBox1.Items.Add(Skill);
    }
    else
    {
        listBox1.Items.Remove(Skill);
    }
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("You have selected following Skills : \n"+ listBox1.Items.Cast<string>().Aggregate((o, n) => o.ToString() + "," + n.ToString()), "Selected Skills",
    MessageBoxButtons.OK, MessageBoxIcon.Information);
}

答案 2 :(得分:0)

您必须循环浏览所选项目并将其附加到文本框中。要在消息框上显示,您需要将所选项目连接到字符串变量并将其用于您的消息。

private void button1_Click(object sender, EventArgs e)
{
    StringBuilder skills = new StringBuilder();
    foreach (object item in listBox1.SelectedItems)
    {
        skills.AppendLine(item.ToString());
    }

    MessageBox.Show("You have selected following Skills : \n" + skills.ToString(), "Selected Skills",
    MessageBoxButtons.OK, MessageBoxIcon.Information);

}