如何使每个列表框项有自己的值通过其他控件,如numericUpDown和checkbox

本文关键字:其他 控件 checkbox numericUpDown 何使每 列表 自己的 | 更新日期: 2023-09-27 17:55:05

我正在尝试创建一个程序,其中listbox有许多项目。每个新项目必须自动与checkboxnumericUpDown交织在一起。因此,例如,项目A将选中checkbox, numericUpDown中选中50,而项目B将选中checkbox, numericUpDown中选中25。如果可能的话,我想通过dictionary<>来完成此操作。

我创建的类

class MediaClass
{
    public bool Checked { get; set; }
    public int Number { get; set; }
}

这是我的字典代码

public void Dictionary()
{
    var dictionary = new Dictionary<String, MediaClass>();
    listBox_Movielist.DataSource = new BindingSource(dictionary, null);
}

我也希望这被保存到一个文本文件。我的保存代码是

private void button_Save_Click(object sender, EventArgs e)
{
    SaveFileDialog savefile = new SaveFileDialog();
    savefile.Filter = "Text files|*.txt";
    savefile.Title = "Save As";
    savefile.ShowDialog();
}

加载代码是

OpenFileDialog loadfile = new OpenFileDialog();
loadfile.DefaultExt = "txt";
loadfile.Filter = "Text files|*.txt";
loadfile.FilterIndex = 1;
loadfile.CheckFileExists = true;
loadfile.CheckPathExists = true;
loadfile.Multiselect = false;
loadfile.ShowDialog();
System.IO.StreamReader lText = new
System.IO.StreamReader(loadfile.FileName);
listBox_Movielist.Text = lText.ReadToEnd();

如何使每个列表框项有自己的值通过其他控件,如numericUpDown和checkbox

假设你的ListBox被命名为ListBox,将它添加到你的窗口的构造函数中:

listbox.SelectionChanged += (sender, e) =>
{
    var item = listbox.SelectedItem as ListBoxItem;
    string media = item.Content as string;
    if (media != null)
    {
        //set checkbox to dictionary[media].Checked
        //set updown to dictionary[media].Number
    }
};

我不太清楚你为什么在一个额外的方法中声明你的字典。这将使得无法在该方法之外引用。您可能希望字典是一个私有字段。就像

private Dictionary<String, MediaClass> dictionary = new Dictionary<String, MediaClass>();

在窗口类的某个位置