从 C# 中的另一个 private void 调用 private void
call private void from another private void in C#
如果 axTws1_tickPrice
中的某些条件成立,我想打电话给 btnSubmit
。我该怎么做?
private void btnSubmit_Click(object sender, EventArgs e)
{
//code here
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
Call butSubmit (how do i do this)
}
}
您最好拥有一个您的两个控制处理程序都调用的通用方法,而不是试图从一个处理程序调用另一个处理程序。这样您的代码就更具可扩展性和可测试性,并且您不必担心事件参数或发送者。
例如:
private void btnSubmit_Click(object sender, EventArgs e)
{
DoStuff();
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
DoStuff();
}
}
private void DoStuff()
{
// code to do stuff common to both handlers
}
只需使用当前参数调用即可。
if (Condition)
{
butSubmit(sender, null)
}
难以置信,但是
btnSubmit_Click(null,null);
或其他参数(如果需要)。
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
button1_Click(sender, EventArgs.Empty);
}
}
button1_Click
类似于接受两个类型 object
和 EventArgs
输入的普通方法,因此您可以通过提供相同的参数来调用它们。如果您不打算在方法内部使用这些参数,那么您可以通过传递 null,null
来调用它们 如果您想在内部使用 e
或 sender
,则不要使用 null
方法。在这种情况下,就像我上面建议的那样打电话给他们。
多个选项。
选项 1:
首选方法,将通用逻辑移至另一种方法。
private void btnSubmit_Click(object sender, EventArgs e)
{
CommonLogic();
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
CommonLogic();
}
}
private void CommonLogic()
{
// code for common logic
}
选项 2:
正在执行为按钮生成 Click 事件的 PerformClick()
方法。
btnSubmit.PerformClick();
选项 3:
像调用任何其他普通方法一样调用事件方法。
btnSubmit_Click(sender, new EventArgs());
感谢 Steve 和 Hari - 这很有效
private void btnSubmit_Click(object sender, EventArgs e)
{
DoStuff();
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
DoStuff();
}
}
private void DoStuff()
{
// code to do stuff common to both handlers
}
如果 axTws1_tickPrice
中的某些条件成立,我想打电话给 btnSubmit
。我该怎么做?
private void btnSubmit_Click(object sender, EventArgs e)
{
//code here
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
Call butSubmit (how do i do this)
}
}
您最好拥有一个您的两个控制处理程序都调用的通用方法,而不是试图从一个处理程序调用另一个处理程序。这样您的代码就更具可扩展性和可测试性,并且您不必担心事件参数或发送者。
例如:
private void btnSubmit_Click(object sender, EventArgs e)
{
DoStuff();
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
DoStuff();
}
}
private void DoStuff()
{
// code to do stuff common to both handlers
}
只需使用当前参数调用即可。
if (Condition)
{
butSubmit(sender, null)
}
难以置信,但是
btnSubmit_Click(null,null);
或其他参数(如果需要)。
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
button1_Click(sender, EventArgs.Empty);
}
}
button1_Click
类似于接受两个类型 object
和 EventArgs
输入的普通方法,因此您可以通过提供相同的参数来调用它们。如果您不打算在方法内部使用这些参数,那么您可以通过传递 null,null
来调用它们 如果您想在内部使用 e
或 sender
,则不要使用 null
方法。在这种情况下,就像我上面建议的那样打电话给他们。
多个选项。
选项 1:
首选方法,将通用逻辑移至另一种方法。
private void btnSubmit_Click(object sender, EventArgs e)
{
CommonLogic();
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
CommonLogic();
}
}
private void CommonLogic()
{
// code for common logic
}
选项 2:
正在执行为按钮生成 Click 事件的 PerformClick()
方法。
btnSubmit.PerformClick();
选项 3:
像调用任何其他普通方法一样调用事件方法。
btnSubmit_Click(sender, new EventArgs());
感谢 Steve 和 Hari - 这很有效
private void btnSubmit_Click(object sender, EventArgs e)
{
DoStuff();
}
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
DoStuff();
}
}
private void DoStuff()
{
// code to do stuff common to both handlers
}