如何使用C#从不同的ListBox元素中保存多个项目?

时间:2017-06-28 10:56:16

标签: c# wpf listbox

我正在使用WPF中的ListBoxes,我正在尝试将来自不同列表框的项目保存到同一个文件中。至于现在每个列表框都有自己的文件。

到目前为止,这是我的代码:

private void OnSaveAs()
{
    SaveFileDialog save = new SaveFileDialog();
    save.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

    if (save.ShowDialog() == true)
    {
        //File.WriteAllText(save.FileName, InputsMinMax.Text);
    }


    if (this.InputsMV.Items.Count > 0 && save.ShowDialog() == true)
    {
        using (FileStream S = File.Open(save.FileName, FileMode.CreateNew))
        {
            using (StreamWriter st = new StreamWriter(S))
            {
                foreach (var aa in InputsMV.Items)
                    st.WriteLine(aa.ToString());
            }
        }

    }
}

1 个答案:

答案 0 :(得分:1)

要保存多个ListBox元素中的项目,您可以创建一个简单的文件格式,其中为每个元素保存其名称,项目数和项目值:

[line 0]     ListBox name
[line 1]     Number of items - n
[line 2]     Item 1
[line 3]     Item 2
 ...         ...     
[line n + 1] Item n 
[line n + 2] Next ListBox name 

请注意,此格式假定项目不包含换行符。

然后你可以保存所有元素中的项目:

private void OnSaveAs()
{
    SaveFileDialog save = new SaveFileDialog();
    save.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

    if (save.ShowDialog() == true)
    {
        using (FileStream S = File.Open(save.FileName, FileMode.CreateNew))
        {
            using (StreamWriter st = new StreamWriter(S))
            {
                // Iterate over ListBox elements
                foreach (var myListBox in MyListBoxes)
                {
                    // Write the name of the ListBox element
                    streamWriter.WriteLine(myListBox.Name);

                    // Write the number of elements
                    streamWriter.WriteLine(myListBox.Items.Count);

                    // Write the elements
                    foreach (var item in myListBox.Items)
                    {
                        streamWriter.WriteLine(item.ToString());
                    }
                }
            }
        }
    }
}