即时尝试创建一个可以为空的DateTimePicker,当控件被标记为具有空日期时,可以选择显示一些提示文本 . 为了实现这一点,我从DateTimePicker继承并添加了一个带有提示文本的Label控件,该控件覆盖了控件的文本部分被标记为具有空日期..问题是如果将DateTimePicker设置为显示通常的日历图标,则此按钮的宽度为VARIABLE ..
下面的图像显示了具有不同大小的相同DateTimePicker控件..一旦日历图标按钮开始与文本重叠,它就会变为更小,简单的下拉图标按钮 .
我可以尝试使用反射来读/写私有字段,但我不知道要读什么 .
我的问题..如何正确找出DateTimePicker控件中显示的日历图标的宽度..
2 回答
我自己找到了一种方式.. =)..当控件宽于显示的文本时,
DateTimePicker
显示日历图标按钮 . 当按钮开始剪切文本时,控件自动回退到显示较小的下拉按钮(在原始问题的图像的第二行中可见)..所以我们找出文本的宽度,日历图标按钮,下拉按钮和控件本身..下面的数学很简单..您可能需要调整几个像素,具体取决于
Label
本身的位置.. =)..服务于我的目的.. =)无需重新发明轮子 . 看一下这个:
Nullable DateTimePicker on CodeProject
还有这个:
Yet another nullable DateTimePicker control