- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个问题,我不知道如何解决。
我有一个打开 OpenFileDialog 以添加数据的表单。
但是在我调用 OpenFileDialog.Show() 之后,我无法使用 BinaryFormatter.Serialize 保存任何内容。
奇怪的是,我什至不需要使用我从 OpenFileDialog 获得的数据,只需打开对话框进行后续调用 Serialize 即可停止工作。
停止工作意味着没有新数据被保存。
我没有收到任何错误消息或异常,它只是默默地失败了。
有没有人指出问题可能出现的时间。
我在添加 OpenFileDialog 并切换到 BinaryFormatter.Serialize 时使用了 XmlSerializer,希望它能更有效地解决我遇到的任何问题,所以我很确定它会影响 XmlSerializer。
我正在使用 .NET 4.0
相关代码(我希望)是:
保存:
public void Save()
{
File.Delete(fileName);
using (Stream stream = File.Open(fileName, FileMode.Create))
{
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(stream, contactList);
}
}
加载:
private void LoadContactList()
{
if (File.Exists(fileName))
{
using (Stream stream = File.Open(fileName, FileMode.Open))
{
BinaryFormatter bin = new BinaryFormatter();
contactList = (List<Contact>)bin.Deserialize(stream);
}
}
else
{
// start on a new database
}
}
OpenFileDialog 的使用:
private void btnPhoto_Click(object sender, EventArgs e)
{
if (DialogResult.OK == ofdPhoto.ShowDialog(this.Parent))
{
// signalling that the dialog have been used have have
// useful data
ofdPhoto.Tag = (object)true;
}
}
我保存的是List:
List<Contact> contactList;
列表中只有Person
[Serializable]
public class Person : Contact
{
#region variables and properties
//public string Photo { get; set; }
public string Photo;
private string lastName;
public string LastName
{
get { return lastName; }
set { lastName = value; base.ComparisonKey = value; }
}
public string FirstName { get; set; }
// no contructor
}
编辑
在程序结束时我保存所有数据:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
data.Save();
}
我通过 OpenFileDialog
获得的文件名路径是一张照片。
路径被剥离,只存储文件名。那部分我已经检查过了。
文件名存储在一个Person对象中,Person对象存储在List
并在程序结束时保留整个数组。
结束编辑
它不依赖于我正在加载的字符串的格式
编辑:在使用 BinaryFormatter.Serializer 保存之前,我在 OpenFileDialog 上调用了 Dispose
当我注释掉 btnPhoto_Click 的内容时,BinaryFormatter.Serializer 起作用了。
我会提出任何想法。
最佳答案
我没有用绝对路径保存我的文件,而是只用了一个文件名。当使用 OpenFileDialog 时,当前目录被更改,数据、数组存储在当前目录中,这与程序开头的位置完全不同。
当我重新启动程序时,当前目录被重置,所有数据似乎都被丢弃了。
link 中描述了一种解决方案
或者只是将当前目录保存在一个字段中 link
关于c# - Form.OpenFileDialog 使 BinaryFormatter.Serialize 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3369636/
目前我有以下内容: $.ajax({ type: 'POST', url: this.action, data: $(this).serialize(), }); 这工作正常,
目前我有以下内容: $.ajax({ type: 'POST', url: this.action, data: $(this).serialize(), }); 这很好用,但
我知道什么是序列化,但对我来说,这是一个无法描述其含义的术语。 为什么我们称序列化为序列化?将对象转换为原始数据(以及膨胀/反序列化,就此而言)有什么意义?谁创造了这个术语,为什么? 最佳答案 它可能
是否可以将数据结构(使用 boost::serialization)序列化为字符串变量或缓冲区(而不是磁盘上的文件)? 最佳答案 当然,让它在stringstream上完成工作。 关于serializ
假设我有以下类型定义,它依赖于常量来指示记录成员的向量长度: type point_t is record x: std_logic_vector(X_WIDTH-1 downto 0);
我尝试序列化一个向量和一个 map 容器,并通过 cout 输出它们的值。然而,我很难理解boost输出的含义。我的代码如下所示: #include #include #include #
我正在尝试将序列化功能添加到我的 Rust 结构之一。这是一个日历事件,看起来像这样: #[derive(PartialEq, Clone, Encodable, Decodable)] pub st
正如主题所暗示的那样,在将大量数据序列化到文件时,我遇到了 boost::serialization 的一个小问题。问题在于应用程序的序列化部分的内存占用大约是被序列化对象内存的 3 到 3.5 倍。
在搜索解决方案时,我得到了 this和 this但我不清楚这个概念,所以无法实现:(。当我尝试更新数据库中的值(特别是日期时间对象)时会发生此错误。以下是我正在使用的代码:- var upd
我收到以下错误, 模板对象不可迭代 def get_AJAX(request, id): data = serializers.serialize("json", Template.objec
由于方便,我正在考虑对我的所有数据 i/o 使用 serialize() 和 deserialize()。但是,我不想在 Julia 更新中被不可读的文件所困扰。 serialize() 和 dese
我有一个通常使用 JMS Serializer 包序列化的实体。我必须在序列化中添加一些不驻留在实体本身中但通过一些数据库查询收集的字段。 我的想法是创建一个自定义对象,用实体字段填充字段并添加自定义
我正在尝试使用 XmlParser 从 xml 文件中删除和添加标签。以下是我在使用“grails run-app”命令部署的 grails 应用程序中执行时运行良好的代码块: def parser
我正在使用 MRUnit 测试 MultipleOutputs。测试用例失败并显示以下消息。 java.lang.ClassCastException: org.apache.hadoop.io.se
本文整理了Java中com.jme3.network.serializing.serializers.ZIPSerializer类的一些代码示例,展示了ZIPSerializer类的具体用法。这些代码
我有一个处理草图,需要与 USB 设备建立 2 个连接。我无法提前判断哪个设备是 USB0 哪个是 USB1。 (不是我至少知道) 其中一台设备发出问候语,另一台设备根本不回答。因此,我编写了带有简单
我在下面有这个代码,我来自 this forum我遵循了。它对我不起作用,但他们声称代码很好。我已经尝试了几种字符串比较方法,例如 string.equals(string)和标准==运营商,仍然没有
当我尝试调用特定的 Web 服务方法时,我收到“Unspecified error”。使用 XMLSpy 我发现参数对象还没有被序列化。 在生成的序列化程序源中,我注意到以下几行: if (!need
在 Rust 中编写 NEAR 智能合约,我的编译器似乎要求通过 API 发送的对象具有 Serialize trait,以及存储在区块链中的对象 BorshSerialize和 BorshDeser
我正在尝试 Kotlin 序列化。按照说明进行设置后,我得到了 Unresolved reference: serializer使用此代码构建错误: val serializer : KSeriali
我是一名优秀的程序员,十分优秀!