如何使每个列表框项有自己的值通过其他控件,如numericUpDown和checkbox
本文关键字:其他 控件 checkbox numericUpDown 何使每 列表 自己的 | 更新日期: 2023-09-27 17:55:05
我正在尝试创建一个程序,其中listbox
有许多项目。每个新项目必须自动与checkbox
和numericUpDown
交织在一起。因此,例如,项目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();
假设你的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>();
在窗口类的某个位置