【发布时间】:2017-08-29 08:46:27
【问题描述】:
我有一个具有byte[] 属性的用户控件。阵列在设计时也会变得巨大。当 Visual Studio 保存表单时,它会使用此方法将其保存到 cs 文件中
this.ctlShowSpreadsheet1.SerializationContent = new byte[] {
((byte)(80)),
((byte)(75)),
((byte)(3)),
((byte)(4)),
((byte)(20)),
((byte)(0)),
((byte)(2)),
((byte)(0)),
((byte)(8)),
((byte)(0)),
((byte)(128)),
((byte)(84)),
((byte)(29)),
...
有没有办法强制将字节数组保存到 resx 文件中?
我尝试更改 DesignerSerializationVisibility 但没有结果。
【问题讨论】:
-
你可以,但它没有帮助。您可以将
[Localizable(true)]添加到属性并将表单的Localizable属性更改为true。然后它将实际数据放入resx文件中,但随后它将对每个元素的引用添加到designer.cs文件中。 -
你试过
LocalizableAttribute并设置Localizable -
@MatthewWatson 我不能确定
UserControl用户在表单上设置了Localizable = true。我无法理解然后它会将实际数据放入resx 文件中,但它会在designer.cs 文件中添加对每个元素的引用。 VS 是否会为 resx 中的每个元素设置一个数组元素(与之前完全一样,但从 resx 中读取每个字节?) resx 不能存储一个数组,而 VS 在单个语句中读取并设置整个数组吗? -
我的意思是,虽然它将数据放入 .resx 文件,但 Designer.cs 文件包含类似
(byte)(resources.GetObject("testUserControl1.Data"))),的行,用于数组的每个元素。这似乎更糟! -
嗯,不得不编辑这个属性听起来很不切实际。不是 [Localizable],它需要底层属性类型的 [Serializable] 属性来说服设计者该类型的对象可以写入 .resx 文件。怎么用 byte[] 来存储电子表格(?)是非常模糊的。 MemoryStream 是可序列化的。
标签: c# .net winforms windows-forms-designer