我有一个有点复杂的UserControl,Visual Studio 2008在使用它时给了我一个相当无害的烦恼.每次我使用Designer打开控件时,它都会决定立即更改设计器设置的一些无害值 - 即Size属性的初始化.如果我保存这些更改,关闭并重新打开,它几乎总是最终决定我的控件的另一个组件需要更改初始大小,无限制.幸运的是,这些变化是无害的,因为我在任何地方都使用自动调整大小,但这对于使用来说非常烦人.我不知道从何处开始弄清楚出了什么问题,我现在唯一想到的是Designer每次打开控件时都会将自动调整大小的结果分配回初始大小字段.关于原因/修复的任何想法?
编辑:此外,我正在使用应用程序设置来保存应用程序运行中某些可调整大小的子组件的大小,但我真的希望Designer足够聪明,以了解它应该只使用默认值.
c# user-controls visual-studio-2008 windows-forms-designer winforms
我在C++和C#中遇到了关于uint使用的几个类似的怪癖,现在我想知道推理(对于每个例子可能完全不同).对于这两个示例,请注意我正在编译时将警告级别设置为最大值.
(1)gcc抱怨在下面将int与uint进行比较,而vc ++没有:
uint foo = <somevalue>;
if( foo == ~0 ) //right here
...
Run Code Online (Sandbox Code Playgroud)
比较0就好了,没有任何强制转换gcc和vc ++.
(2)在C#3.5中,我遇到了一个类似的问题.以下工作正常:
uint foo = 1;
uint bar = 2;
Run Code Online (Sandbox Code Playgroud)
但这会给出一个uint/int警告:
bool condition = <somevalue>;
uint foo = condition ? 1 : 2; //right here
Run Code Online (Sandbox Code Playgroud)
是什么给出了,为什么编译器对立即值的签名如此敏感?我完全理解从变量赋值时的问题,但这对我来说对于直接值是没有意义的; 在解析中是否存在一些隐藏的难以阻止此行为被允许?或者是什么?
编辑:是的,我知道我可以用'你'来填充我的数字,但是这可以回避我的问题,即隐含地向左侧投射,而不是明确地施放右侧.