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

本文关键字:列表 关联 布尔 数据 数字 | 更新日期: 2023-09-27 17:51:05

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

private void button_Insert_Click(object sender, EventArgs e)
{
    listBox_Movielist.Items.Add(this.text_Insert.Text);
    text_Insert.Text = string.Empty;
}

该程序还能够从listbox中删除项目,因此删除布尔值和数字关系,以防它保留在保存的文件中,并在输入或重新输入类似的数据项时重新关联。

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

另外,以。txt为扩展名的保存文件是否适合这样的内容?如果不是,那会是什么?

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

虽然ListBox项的类型是object,但它们将在ListBox中作为字符串显示,使用从.ToString()项方法返回的值。

您可以使用CheckBoxNumericUpDown创建user control,并将其添加到ListBox.Items集合中,但不要期望在ListBox中看到控件,您将只看到调用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; }
}

然后可以声明Dictionary<String, DataValue>,它将文本框中的文本存储为键,并将数据存储为新的DataValue对象。

如果你只是在列表框中插入新项,那么在字典中添加新键。如果要获取列表框项的信息,请按键从字典中获取。