C# 如何计算c中的按钮按下时间?

C# 如何计算c中的按钮按下时间?,c#,winforms,C#,Winforms,我的表单中有各种各样的按钮,每个按钮的按下都有一个与之相关联的动作。我想测量按钮按下和释放之间的时间,单位为毫秒。如何为每个按钮执行此操作。可以使用或使用性能分析器来测量时间跨度,如 ,它也有一个免费的选项 StopWatch relative和mHods可以在事件处理程序的前面和末尾注入。在加载事件的形式中,您可以迭代所有按钮,并将StopWatch动态附加到每个按钮上,然后处理它们的MouseDown和MouseUp事件: this.Controls.OfType<Button>

我的表单中有各种各样的按钮,每个按钮的按下都有一个与之相关联的动作。我想测量按钮按下和释放之间的时间,单位为毫秒。如何为每个按钮执行此操作。

可以使用或使用性能分析器来测量时间跨度,如 ,它也有一个免费的选项


StopWatch relative和mHods可以在事件处理程序的前面和末尾注入。

在加载事件的形式中,您可以迭代所有按钮,并将StopWatch动态附加到每个按钮上,然后处理它们的MouseDown和MouseUp事件:

this.Controls.OfType<Button>().ToList().ForEach(button =>
{
    button.Tag = new Stopwatch();
    button.MouseDown += new MouseEventHandler(button_MouseDown);
    button.MouseUp += new MouseEventHandler(button_MouseUp);
});
您需要为down事件捕获KeyDown和MouseDown,为up事件捕获keydup和MouseUp

    public Form1()
    {
        InitializeComponent();
        button1.KeyDown += new KeyEventHandler(button1_down);
        button1.MouseDown+=new MouseEventHandler(button1_down);

        button1.KeyUp += new KeyEventHandler(button1_Up);
        button1.MouseUp += new MouseEventHandler(button1_Up);
    }

    void button1_down(object sender, EventArgs e)
    {
        Console.WriteLine(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
    }

    private void button1_Up(object sender, EventArgs e)
    {
        Console.WriteLine(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
    }

我不明白你想计算点击一个按钮需要多长时间,或者执行处理程序代码/进程需要多长时间?为什么不使用button.MouseDown和button.MouseUp事件?这看起来很奇怪,但是你可以查看按钮的MouseDown、MouseUp、KeyDown和KeyUp事件。在down中获取datetime对象并计算up事件中的时间差。在button.MouseDown和button.MouseUp事件中查找utc时间差是的,我想计算按钮被按下的时间
    public Form1()
    {
        InitializeComponent();
        button1.KeyDown += new KeyEventHandler(button1_down);
        button1.MouseDown+=new MouseEventHandler(button1_down);

        button1.KeyUp += new KeyEventHandler(button1_Up);
        button1.MouseUp += new MouseEventHandler(button1_Up);
    }

    void button1_down(object sender, EventArgs e)
    {
        Console.WriteLine(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
    }

    private void button1_Up(object sender, EventArgs e)
    {
        Console.WriteLine(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
    }