Kar*_*hik 2 .net c# oop visual-studio c#-4.0
我无法深度复制UserControls,因为它们未标记为可序列化.
这个设计背后的原因是什么?
Han*_*ant 11
序列化一个控件不是问题,它正在反序列化,这是非常难以做到的.期望是这将产生对照的精确克隆.这几乎是不可能准确的,有一个与控件相关的大量运行时状态.不仅在Control类对象本身,也在窗口的内部状态,声明Windows不允许您直接访问.
但最终的问题是它具有与流程实例相关联的状态.Windows窗口类名称和秘密属性访问键等重要的内部属性与程序的一次运行不同.因此,无法在上一次运行程序或其他程序中序列化时重新创建控件.
也就是说,Winforms设计者实际上支持控件序列化.它不是字节,而是生成代码.在运行时重新创建控件的代码,与在设计时看起来相同.减去一大堆细节,如尺寸和颜色,它们通常在另一台机器上不同.设计者的最大优点是它只需要序列化控件的初始状态,它在构造函数时的状态.在此之后的任何时候都做同样的事情,在Windows创建控件的窗口并向它发送一堆消息之后,这是一个非常难以破解的难题.这是一个bug工厂.因此不受支持.
| 归档时间: |
|
| 查看次数: |
3714 次 |
| 最近记录: |