我的窗体上有三个按钮
并且每个按钮都有自己的方法,除了 To + T1 ,当我点击 To 时,它会设置时间 T0 为了'0'以及一些额外的设置,同样当我点击 T1 时,它获得当前时间并计算时间 T1 。
按钮 T0 + T1 将触发 T0 按钮点击事件,然后按 T1 按钮点击事件。
从上面的设置中,无论哪种方式,我都得到 T0 &的相同时间。 T1 (例如:T0 = 0,T1 = 0.1秒),现在我的问题是,如果我点击 T0 + T1 按钮有没有办法实现时间 T0 = 0 , T1 = 0 ?
任何建议都会非常受欢迎&谢谢你的时间.. :))
答案 0 :(得分: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);
但是,上述代码会在彼此之后触发事件,但不能同时触发事件。
答案 1 :(得分: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.Click
或Button1.Click
事件触发。这段代码只调用两个方法(即使它们在某处被用作事件处理程序)。您无法在该事件声明的对象外部触发事件。
第二,由于操作系统的性质,你不能在完全 相同的时间调用任何两种方法,它不是一个实时操作系统。当然,使用单个线程(如在您的示例中)这是不可能的,因为线程按顺序执行其指令,但是使用多个线程这是不可能的 - 不能保证两个线程将同时启动(并且没有这样的API)。