c#里面如何编写在一定条件下使窗体对鼠标单击失去响应或者恢复响应的代码?

我在编写一个五子棋程序,棋盘和棋子是直接画在窗体Form里的,落子依靠Form_Click事件实现我希望在判断输赢后棋盘上不能落子,也就是使窗体失去对Form_Click... 我在编写一个五子棋程序,棋盘和棋子是直接画在窗体Form里的,落子依靠Form_Click事件实现
我希望在判断输赢后棋盘上不能落子,也就是使窗体失去对Form_Click事件的响应
我还希望点击“再来一局”按钮后,窗体恢复对Click的响应

我已经尝试了 this.Click -= Form1_Click_1,的确可以使窗体失去响应,但对应的使窗体恢复响应的代码
this.Click +=Form1_Click_1 却有问题,我的鼠标一旦移动地快点就会练下两个子……

请问还有什么其他比较好的比较简单的使窗体失去、恢复鼠标单击响应的方法?
展开
 我来答
百度网友9c38907
2013-06-27 · TA获得超过421个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:359万
展开全部
private bool GameOver;
protected override void WndProc(ref Message m)
        {
            const int WM_LBUTTONDOWN = 0x0201;//WINDOWS消息鼠标左键按下
            if(m.Msg==WM_LBUTTONDOWN)//这里拦截它
            {
                if(GameOver==true)//判断如果结束
                return;//直接跳出去,也就是鼠标按下的消息将当次不在向下传递
            }
            base.WndProc(ref m);
        }

你可以重载窗体的消息处理,也就是WndProc,也可以在OnMouseDown中判断也可以,都一样的

主要就是会让你的Form_Click失去事件响应

希望对你有帮助。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoliang_5656
2013-06-27 · 超过17用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:30.4万
展开全部
你可设一全局变量,用来判断这局是否结束,每次单击时在Form_Click事件做判断,要是没结束接着执行落子事件,要是这局结束,就不执行落子事件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xy404750389
2013-06-27 · TA获得超过505个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:147万
展开全部
int isReponse=0;如果要让他失去响应,isReponse=1;如果要回覆就isReponse=0;然後在form的click事件中写判断,如果isReponse=1;则return;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghotos
2013-06-27 · TA获得超过280个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:361万
展开全部
你能不能直接在事件方法里判断是不是结束啊,if(结束) return;
逻辑很简单啊,不用搞那么高端的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式