我正在构建一个自动点击应用程序,可以按设定的时间间隔点击鼠标。
注意间隔配置区域。我试图编写一些逻辑,自动简化输入的时间。分钟框上升到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。
我真的很困惑。谁能帮我?谢谢!
答案 0 :(得分:0)
所以,看起来你的目的就是拥有它,这样当你达到毫秒时它会在达到1000时上升到秒,然后当你的秒数达到60时它会累积到你的分钟等等。 / p>
以下是我将如何实现这一目标。首先将所有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;
}