日期:2014-05-17  浏览次数:20753 次

sandy945 请进
非常感谢您帮忙解决了这个问题,原贴如下:
http://topic.csdn.net/u/20111213/23/2c09421f-be60-45ec-ba75-0285a550cd12.html

但在测试中又出现了一个新问题,我没办法解决,再次向您请教:

那个控件的代码可以在这里下载:

http://download.csdn.net/detail/jcyluck/3965450

测试过程如下:
1.点击日期控件的BUTTON后,在日期框中选择一个日期,在日期后面加上“S”
2.点击本PAGE的另一个TEXTBOX,试图进入这个控件,会提示错误,并将光标返回到日期控件中。
3.再点击BUTTON,展开日期选择框,在日期框中选择一个日期,并再次在日期后面加上“S”
4.点击另一个PAGE标签头,试图进入另一个PAGE页面,提示错误,并将光标返回到日期控件中。
5.再点击BUTTON,这时,就不能展开日期选择界面了。也就是不能重复第3步的动作。

我DEBUG后,发现此时光标在 重写的那个属性 protected override bool ShowFocusCues 中死循环,我将这个属性注释后,仍然不能解决问题,而且不知道问题在哪?请赐教,谢谢。


------解决方案--------------------
http://www.eggheadcafe.com/microsoft/NET-Windows-Forms/32061526/tab-control-validation-and-losing-events.aspx

问题我看到了,是切换tab的时候 事件丢了,但现在不知道怎么解决。

今天有事,有时间的时候会帮你看的。
------解决方案--------------------
这里是改好的控件:http://kuai.xunlei.com/d/XEGNFRHUGADA

由于在VS2010下编辑过了,因此你要单独把cs文件复制过去,需要复制的cs文件有:
Form1.cs
UCL_Datetime.cs
UCL_Datetime.Designer.cs

基本改动说明:
Form1.cs的改动主要是为了处理窗体关闭时的问题,要在窗体关闭时屏蔽控件验证(你都要关了,还验证干嘛啊)。
其中一段代码
C# code
FormClosing += new FormClosingEventHandler(Form1_FormClosing);