【问题标题】:Saving the contents to a file and then reading it back and displaying it将内容保存到文件中,然后将其读回并显示
【发布时间】:2014-01-23 10:28:58
【问题描述】:

我有一些细节是 Canvas 上的图像、文本框中的 XAML 和列表框中的项目。无论扩展名如何,如何将所有这些内容保存在一个文件中。我还应该能够打开这些文件并将所有内容放回它们的位置,即 Canvas 中的图像、文本框中的 XAML 和列表框中的项目。我尝试将详细信息保存在 String 中并保存,但我无法再次打开并放回内容。

我用来保存内容的代码是:

String Data = imagesource + xamldata + xamldesign + listboxitems;
try
{
    System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileDialog.FileName);
    file.WriteLine(Data);
    file.Close();
}

这里的 imagesource 是获取图像的来源。 xamldata 来自文本框,listboxitems 包含列表框中的项目列表。

【问题讨论】:

    标签: c# wpf file-io save


    【解决方案1】:

    不,不。 这里的事情有点复杂。您应该理解并接受一种称为“序列化”的新范例——列表中的所有这些东西:图像、文本、列表框中的项目具有不同的性质和目的,它们可以很容易地存储在同一个文件中,但应该是: 1. 尊贵的 2. 适当处理 - 即您将图像作为一系列字节,将其放在文件中的某个位置(由长度或数据结构本身定义),然后在加载时将其从文件中取回,重新创建图像,将其放在画布,文本和元素也是如此。

    计算机只是无法读懂你的想法并理解哪些字节去了哪里。您可以“教”它如何正确处理您存储的部分信息。通常会创建这样的任务类,例如:

     public class StoreClass {
       public byte[] Image {get;set;}
       public string Text {get;set;}
       public List<MyListItem> ListContent {get;set;}
     }
    
    //here goes MyListItem definition
    public class MyListItem {....}
    

    然后在需要时填充此类并将其序列化到磁盘上,然后从磁盘加载它(过程称为“去序列化”)并将其内容放置在正确的位置。

    您可以阅读更多here

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 2017-09-08
      • 1970-01-01
      • 2017-02-25
      • 2011-03-16
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多