1

我正在构建一个自动点击器应用程序,它可以让鼠标在设定的时间间隔内点击。

在此处输入图像描述

注意间隔配置区域。我试图编写一些自动简化输入时间的逻辑。分钟框上升到 60,秒框上升到 60,毫秒框上升到 1000。我设置了一个类来处理该逻辑,但这可能不是正确的方法(我是在编程方面还是新手)。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AutoClicker {
    public static class TotalTime {
        public static int Interval(NumericUpDown m_, NumericUpDown s_, NumericUpDown ms_) {
            int m = (int)m_.Value;
            int s = (int)s_.Value;
            int ms = (int)ms_.Value;
            int total = 0;

            total = total + (m * 60000);
            total = total + (s * 1000);
            total = total + ms;

            return total;
        }

        public static void ChangeLogic(NumericUpDown m_, NumericUpDown s_, NumericUpDown ms_) {
            int interval = Interval(m_, s_, ms_);

            if (ms_.Value == 1000)
            {
                ms_.Value = 500;
                s_.UpButton();
                ms_.Value = 0;
            }

            if (s_.Value == 60 && m_.Value < 60)
            {
                if (ms_.Value == 0)
                {
                    ms_.Value = 1;
                    s_.Value = 0;
                    m_.UpButton();
                    ms_.Value = 0;
                }
                else
                {
                    s_.Value = 0;
                    m_.UpButton();
                    if (ms_.Value == 1)
                        ms_.DownButton();
                }
            }

            if (ms_.Value == -1)
            {
                ms_.Value = 999;
                s_.DownButton();
            }

            if (s_.Value == -1 & m_.Value > 0)
            {
                s_.Value = 59;
                m_.DownButton();
                if (ms_.Value == 1)
                    ms_.DownButton();
            }
        }
    }
}

每次更新任何框中的值时都会调用 ChangeLogic 方法。

选择逻辑中有很多错误。例如,当按住向上按钮几秒钟时,程序会崩溃。如果秒 = 59 和分钟 = 0,并且按下秒向上按钮,则会出现警告“你的时间不能少于 250 毫秒”,并且分钟被调整为 2。

我真的很困惑。谁能帮我?谢谢!

4

1 回答 1

0

因此,看起来您的意图是拥有它,这样当您增加毫秒时,它会在达到 1000 时累积到秒,然后当您的秒数达到 60 时,它会累积到您的分钟,等等。

以下是我将如何完成此任务。首先将所有 NUD 设置为最大值 99999。然后使用如下代码:

(注意intervalUpdating变量的使用。这将使您可以按住向上按钮,并且在intervalChanged()方法执行时它不会尝试再次执行它。)

    private void nudSeconds_ValueChanged(object sender, EventArgs e)
    {
        intervalChanged();
    }

    private void nudMilliseconds_ValueChanged(object sender, EventArgs e)
    {
        intervalChanged();
    }

    private bool intervalUpdating = false;
    private void intervalChanged()
    {
        if (intervalUpdating)
        {
            return;
        }

        intervalUpdating = true;

        if (nudMilliseconds.Value >= 1000)
        {
            var val = (int)nudMilliseconds.Value / 1000;
            nudSeconds.Value += val;
            nudMilliseconds.Value = (nudMilliseconds.Value - (val * 1000));
        }

        if (nudSeconds.Value >= 60)
        {
            var val = (int)nudSeconds.Value / 60;
            nudMinutes.Value += val;
            nudSeconds.Value = (nudSeconds.Value - (val * 60));
        }

        intervalUpdating = false;
    }
于 2013-03-20T15:48:43.690 回答