我如何才能使一键点击事件在3种情况下像开关一样运行

本文关键字:开关 情况下 运行 一样 3种 一键 事件 | 更新日期: 2023-09-27 18:21:45

按钮点击事件执行此方法:

public void Console(List<Keys> keys)
        {
            start = DateTime.Now;
            progressBar1.Maximum = 1;
            progressBar1.Step = 1;
            progressBar1.Value = 0;
            DoRequest(ScreenshotRequest.DannysCommands.NormalOperation);
            DoRequest(ScreenshotRequest.DannysCommands.Displayoverlays);
            DoRequest(ScreenshotRequest.DannysCommands.Dontdisplayoverlays);
        }

我想第一次点击只调用这个:

DoRequest(ScreenshotRequest.DannysCommands.NormalOperation);

第二次点击应该只调用这个:

DoRequest(ScreenshotRequest.DannysCommands.Displayoverlays);

第三次点击应该只调用这一行:

DoRequest(ScreenshotRequest.DannysCommands.Dontdisplayoverlays);

如果我第四次点击,应该会从第一次通话开始。订单总是:

DoRequest(ScreenshotRequest.DannysCommands.NormalOperation);
DoRequest(ScreenshotRequest.DannysCommands.Displayoverlays);
DoRequest(ScreenshotRequest.DannysCommands.Dontdisplayoverlays);

所以第四次点击应该叫这行:

DoRequest(ScreenshotRequest.DannysCommands.NormalOperation); 

等等。

我如何才能使一键点击事件在3种情况下像开关一样运行

您可以使用计数器。在类中定义一个私有的int全局变量。

private int count = 0 ;

编辑你的方法如下:

    public void Console(List<Keys> keys)
    {
        if(count == 0)
        {
            // first condition
            count++;
        }
        else if(count == 1)
        {
            // second condition
            count++;
        }
        else
        {
            count = 0;
            // third condition
        }
    }

此外,您还可以使用switch-case语句,而不是嵌套的if语句。

只需创建类似"int command=0"的字段,该字段可以是0、1或2。

public void Console(List<Keys> keys)
        {
            start = DateTime.Now;
            progressBar1.Maximum = 1;
            progressBar1.Step = 1;
            progressBar1.Value = 0;
            if(command == 0)
                DoRequest(ScreenshotRequest.DannysCommands.NormalOperation);
            if(command == 1)
                DoRequest(ScreenshotRequest.DannysCommands.Displayoverlays);
            if(command == 2)
                DoRequest(ScreenshotRequest.DannysCommands.Dontdisplayoverlays);
            /* here can be switch instead of if */
            command++;
            command = command % 3;
        }