关于Cursor.Current = Cursors.WaitCursor;的问题!
在写程序时正常是使用
Cursor.Current = Cursors.WaitCursor;和Cursor.Current = Cursors.Default;
我之前一直都没注意
现在发现在等待时间比较长,中间光标还在转圈的时候
我一阵狂点其他按钮,居然是有反应的,点多了我造成我系统内存溢出
有什么办法让光标出现的时候不能点其他按钮(类似于模式窗口)?
[解决办法]
两种方法
1. 按钮的消息响应里判断状态
2. 让计算发生在你的按钮的消息处理函数中,这样就不会响应其他的点击消息了
[解决办法]
Cursor.Current = Cursors.WaitCursor;和Cursor.Current = Cursors.Default;
你的程序运行后面那条语句了??
调试看看...
[解决办法]
Cursor只是界面的一个用户反馈,告诉用户当前忙或者闲的状态。
并不能拒绝所有的用户操作。
不过可以这样,根据Cursors.WaitCursor == Cursor.Current这个条件来判断是否执行用户的操作。
即在按钮中用它来做个逻辑判断。
不知道我说清楚了没有。
[解决办法]
可以看出你的数据加载是在UI线程中做的,实际点击按钮时,消息已经进队列了,但由于一直忙于加载数据,所以不会处理。当数据加载完,会处理所有这些消息,就出现了这样的现象。
可以在加载完数据之后立即PeekMessage将点击类消息移除试试。
[解决办法]
在光标出现的时候这个不好判断,但是如果光标状态是你函数调出来的。那你完全可以在应用在某个状态的时候禁用UI。这个是没问题的。