|
|
1
3
理论上,设计师可以存储原始输入文本。然而,由于可视化设计器还可以修改这些值(即左、上等),因此在序列化期间,它必须将此存储与控件的值协调起来。这可能是设计器不存储输入的文本值的一个原因,相反,它会获取文本并将其转换为可放入控件中的值。当需要序列化时,它只读取控件的属性并写入它们。在存储之前,几乎没有必要询问十进制的细节,只是为了优化要使用的构造函数。它需要处理十进制类型的所有可能值,因此int[]为十进制可以表示的任何值提供了一个往返可靠的存储机制。 顺便说一句,下面概述了十进制的内部结构:
更新:
当然。我只是想解释一下你的问题“为什么设计师使用那种形式 而不是把我输入的值 “。基本上,我要说的是,设计师没有跟踪你输入的确切文本值“-65535”。相反,它将其转换为具有类似decimal.parse(…)的十进制。然后将这个小数点放入控件的值中,在本例中是numericupdown.minimum。在单词后面,它通过读取每个属性值来序列化XXXX.designer.cs文件中控件的状态。因此,它不再具有您输入的原始文本“-65535”的副本,而是只具有生成的十进制值。 提到“协调此存储…”的部分只是简单地指出,不仅很难跟踪用户输入的原始文本,而且很难检测原始文本输入是否被其他方法更改了该值。 对不起,如果这仍然令人困惑的话,我很难描述它。英语是我的第五种语言,在C语言、C++、SQL和JScript之后,所有这些都比英语更明确。 |
|
|
2
0
这可能是一些过早的优化,迫使小数的指数部分为0,以便与其他小数进行更快的比较,而无需进行任何缩放,或进行更快的增量/减量操作。
|
|
|
Ron · WPF如何强制设计器显示自定义窗口样式 12 年前 |