如何在c#wpf中加载/保存乘法文件?

时间:2019-05-20 21:04:28

标签: c# wpf save

简介

我目前正在为Pen&Paper小组的wpf字符表设计师工作。我已经做过设计和计算,现在我试图找到一种正确保存/加载字符的方法。我已经设法在启动时加载了一些xml文件,以使用默认值填充我的字符表设计器。我选择为每种“项目”(例如武器,技能,库存等)都拥有一个xml文件,并希望保持这种状态-至少目前如此,因为要通过多种文件来更改某些内容要多得多比仅拥有一个很大的文件更舒适。

问题

我认为SaveFileDialog可能会派上用场,但是我发现它只能保存一个文件,这给了我一些选择:

  • 获取SaveFileDialog的文件夹,而不要使用Path.GetDirectoryName(saveFileDialog.FileName);之类的名称,因为该文件夹必须已经存在。
  • 使用WinForms控件。我听说WinForms为此提供了一个更好的对话框,但是到目前为止,我对Winforms所做的工作非常简短。
  • 使用CommonOpenFileDialog中的Microsoft.WindowsAPICodePack.Dialogs。我还没有尝试过,因为我在组装时遇到了麻烦。我也不是很了解。会适合这种情况吗?
  • 使用单个文件保存。就像我说的那样,这是可行的,但不是理想的选择,因为如果我重新编写代码中的某些内容并且不想为每个代码挖掘数千行代码,可能不得不对xml进行一些手动更改。字符。
  • 使用.zip。我已经看到StackOverflow上的其他人采用这种方式。还没有尝试过,因为这似乎并不是解决问题的“干净”方法。
  • 使用自己的文件扩展名。我也没有这样做,但是由于我基本上需要将其作为.zip,所以我想在这种情况下我应该只使用zip。

问题

在WPF中通常如何使用多个文件进行保存/加载方面,我几乎没有经验。我有什么选择?

1 个答案:

答案 0 :(得分:1)

正如罗恩建议的那样,您应该研究使用FolderBrowseDialog名称空间中的System.Windows.Forms

假设您有一个TextBox和两个名为BtnBrowse的按钮,可以浏览文件夹,而另外两个BtnSave则可以保存文件。

看起来像这样:

enter image description here

然后,在Browse按钮中,使用它来让用户选择文件夹路径,然后使用保存按钮进行保存。

public partial class MainWindow : Window
{
    FolderBrowserDialog folderBrowserDialog = null;
    List<string> filesToSave = null;

    public MainWindow()
    {
        InitializeComponent();
        folderBrowserDialog = new FolderBrowserDialog();
        filesToSave = new List<string>
        {
            "A.txt",
            "B.txt",
            "C.txt"
        };
    }

    private void BtnBrowse_Click(object sender, RoutedEventArgs e)
    {
        if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            TxtFolderPath.Text = folderBrowserDialog.SelectedPath;
        }
    }

    private void BtnSave_Click(object sender, RoutedEventArgs e)
    {
        foreach (var file in filesToSave)
        {
            var path = Path.Combine(TxtFolderPath.Text, file);
            File.WriteAllText(path, string.Format("Contents of {0}", file));
        }
    }
}