0

我的 Windows 窗体上有三个按钮

在此处输入图像描述

每个按钮都有自己的方法,除了To+T1,当我点击To时,它会将时间T0设置为“0”以及一些额外的设置,同样,当我点击T1时,它会获取当前时间并计算时间T1

按钮T0+T1将触发T0按钮单击事件,然后触发T1按钮单击事件。


从上面的设置中,无论哪种方式,我都会得到相同的T0T1时间(例如:T0=0,T1=0.1 秒),现在我的问题是,如果我按下T0+T1按钮,有什么方法可以实现T0的时间=0 , T1=0 ?

任何建议将不胜感激&感谢您的时间..:)

4

2 回答 2

5

在 Form.Designer.cs 中,您可以添加另一个 System.Eventhandler。

例如,您可以更改以下内容:

this.ToT1.Click += new System.EventHandler(this.ToT1_Click);

对此:

this.ToT1.Click += new System.EventHandler(this.To_Click);
this.ToT1.Click += new System.EventHandler(this.T1_Click);

然而,上面的代码会在一个之后触发事件,但不会同时触发。

于 2013-06-28T10:31:19.093 回答
4

看起来您只需要为计算提供一些基本值:

void CalculateT0(DateTime calculationBase) {...}
void CalculateT1(DateTime calculationBase) {...}

void T0_ButtonClick(...)
{
    CalculateT0(DateTime.Now);
}

void T1_ButtonClick(...)
{
    CalculateT1(DateTime.Now);
}

void T0Plus1_ButtonClick(...)
{
    var calculationBase = DateTime.Now;
    CalculateT0(calculationBase);
    CalculateT1(calculationBase);
}

更新

关于同时触发两个事件。

首先,您的问题与触发事件无关。你现在有这样的代码:

void T0Plus1_ButtonClick(...)
{
    T0_ButtonClick(...);
    T1_ButtonClick(...);
}

不是一个Button0.ClickButton1.Click事件触发。此代码仅调用两个方法(即使它们在某处用作事件处理程序)。您不能在声明该事件的对象之外触发事件。

第二,由于操作系统的性质,您不能同时调用任何两个方法,它不是实时操作系统。当然,这是不可能使用单线程(如您的示例中),因为线程顺序执行其指令,但使用多个线程这是不可能的 - 不能保证两个线程将同时启动(并且没有这样的 API)。

于 2013-06-28T10:26:19.953 回答