C#如何:尝试在同一个班级中调用两次按钮?

Val*_*ien 0 c# winforms

在这里和网上进行了一些搜索并且还没有找到一个好的答案.我要做的是在C#中的同一个类中调用两次按钮.

这是我的情景 -

我有一个带有"Go"按钮的表单.当我第一次点击它时,它会通过一些'for'循环(不停)来显示颜色范围.同时我将button1.Text属性设置为"Stop".我希望能够第二次点击按钮,当发生这种情况时,我希望程序停止.基本上是一个走走停停的按钮.我知道如何使用2个按钮事件,但想使用1个按钮.

现在,结束程序的唯一方法是表单上的X按钮.

我尝试了不同的东西,到目前为止没有太多运气,所以想问这里的大师如何做到这一点.

顺便说一句,这是Head First Labs C#书籍练习的修改.

谢谢!

〜艾伦

Cer*_*rus 7

您需要使用多线程(在单独的线程中异步启动进程密集型代码),例如,使用BackgroundWorker.NET 2+中的对象.这是必要的,因为在完成Start方法中运行的循环之前,UI不会响应用户的单击.如果您使用相同的按钮或另一个按钮来切换过程,则无关紧要,因为处理器正忙于处理循环.

BackgroundWorker有一个叫做财产WorkerSupportsCancellation这就需要在这种情况下是正确的.当用户单击"停止"时,您将调用该CancelAsync方法BackgroundWorker.

有关一个很好的例子,请参阅MSDN.此外DreamInCode有一个很好的教程,这似乎非常相似,您的要求.