C# 如何将布尔值和数字数据关联到列表框C中的项目#

C# 如何将布尔值和数字数据关联到列表框C中的项目#,c#,listbox,boolean,numeric,C#,Listbox,Boolean,Numeric,我正在创建一个程序,它要求列表框中的每个项目都有自己的数据。 例如,一个条目可以选中一个复选框,将numericUpDown设置为20,而另一个条目可以选中一个复选框,将numericUpDown设置为35。 到目前为止,我可以通过文本框向列表框输入项目 如果有必要,我已经实现了下面的代码 private void button_Insert_Click(object sender, EventArgs e) { listBox_Movielist.Items.Add(this.text

我正在创建一个程序,它要求
列表框中的每个项目都有自己的数据。
例如,一个条目可以选中一个
复选框,将
numericUpDown设置为20,而另一个条目可以选中一个
复选框,将numericUpDown设置为35。
到目前为止,我可以通过
文本框
列表框
输入项目
如果有必要,我已经实现了下面的代码

private void button_Insert_Click(object sender, EventArgs e)
{
    listBox_Movielist.Items.Add(this.text_Insert.Text);
    text_Insert.Text = string.Empty;
}
该程序还可以从
列表框中删除项,从而删除布尔值和数字关联,以防它保留在保存的文件中,并在输入或重新输入类似数据项时重新关联

private void button_Remove_Click(object sender, EventArgs e)
{
    listBox_Movielist.Items.Remove(this.listBox_Movielist.SelectedItem);
}

另外,扩展名为.txt的保存文件是否适合这样的情况?如果不是,会是什么?

虽然
列表框
项的类型为
对象
,但它们将在
列表框
中以字符串形式显示,使用从项
.ToString()方法返回的值

您可以使用
复选框
NumericUpDown
创建
用户控件
,并将其添加到
列表框中。Items
集合,但不希望看到
列表框中的控件,您只会看到调用
ToString()返回的用户控件的字符串表示形式
方法

您可以重写
ToString()
方法来显示用户控件内控件的状态,我建议您使用以下方法:

public override string ToString()
{
    return string.Format("{0}, {1}", 
                          MyCheckBox.CheckState.ToString(), 
                          MyNumericUpDown.Value.ToString()
                         );
}

首先,您可以创建存储布尔值和数值的类:

class DataValue
{
   public bool Checked { get; set; }
   public int Number { get; set; }
}
然后您可以声明
字典
,它将文本作为键存储在文本框中,数据作为新的
数据值
对象

如果您只是在列表框中插入新项,请在字典中添加新键。
如果您想获取有关listbox项的信息,请按键从dictionary中获取。

看起来这是用于保存文件的,因此,在这方面,我感谢您。然而,不幸的是,这并不能解决我目前的问题。我希望我的
列表框中的每个项目都被视为自己的对象。因此,单击一个项目将选中
复选框
,而单击另一个项目将删除该复选框。同样的事情也适用于
numericUpDown
。一项设置为20,另一项设置为9。可以将其视为具有多个
复选框
数字上下按钮
,但更有效、更高效的方式不会打扰用户。如果您需要显示控件本身,列表框对您没有帮助。创建包含复选框和数字向上向下的用户控件,并在面板上显示它们。您必须自己编写用户控件之间交互的代码。我已经创建了类并实现了您建议的代码。然而,我在字典方面遇到了麻烦。我找不到正确的方法来表达它,每次我这么做,它都会产生一个错误。你能提供你的代码列表和你得到的异常吗?