我的 Windows 窗体上有三个按钮

每个按钮都有自己的方法,除了To+T1,当我点击To时,它会将时间T0设置为“0”以及一些额外的设置,同样,当我点击T1时,它会获取当前时间并计算时间T1。
按钮T0+T1将触发T0按钮单击事件,然后触发T1按钮单击事件。
从上面的设置中,无论哪种方式,我都会得到相同的T0和T1时间(例如:T0=0,T1=0.1 秒),现在我的问题是,如果我按下T0+T1按钮,有什么方法可以实现T0的时间=0 , T1=0 ?
任何建议将不胜感激&感谢您的时间..:)
在 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);
然而,上面的代码会在一个之后触发事件,但不会同时触发。
看起来您只需要为计算提供一些基本值:
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.Click或Button1.Click事件触发。此代码仅调用两个方法(即使它们在某处用作事件处理程序)。您不能在声明该事件的对象之外触发事件。
第二,由于操作系统的性质,您不能同时调用任何两个方法,它不是实时操作系统。当然,这是不可能使用单线程(如您的示例中),因为线程顺序执行其指令,但使用多个线程这是不可能的 - 不能保证两个线程将同时启动(并且没有这样的 API)。