如果btnSubmit
中的某些条件为真,我想致电axTws1_tickPrice
。我该怎么做?
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)
}
}
答案 0 :(得分:4)
你最好使用一个两个控制处理程序调用的通用方法,而不是试图从另一个处理程序调用一个处理程序。这样,您的代码就更具可扩展性和可测试性,并且您不必担心事件参数或发件人。
例如:
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
}
答案 1 :(得分:2)
多种选择。
选项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:
执行PerformClick()
方法,为按钮生成Click事件。
btnSubmit.PerformClick();
选项3:
像任何其他常规方法一样调用事件方法。
btnSubmit_Click(sender, new EventArgs());
答案 2 :(得分:0)
只需用当前参数调用它。
if (Condition)
{
butSubmit(sender, null)
}
答案 3 :(得分:0)
难以置信,但
btnSubmit_Click(null,null);
或其他参数,如果需要。
答案 4 :(得分:0)
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{
if (Condition)
{
button1_Click(sender, EventArgs.Empty);
}
}
button1_Click
类似于普通方法,它接受两个类型为object
和EventArgs
的输入。因此您可以通过提供相同的参数来调用它们。如果您不打算在方法中使用这些参数,那么您可以通过传递null,null
来调用它们,如果您想使用null
或e
,请不要使用sender
在方法内部。在这种情况下称他们像我上面建议的那样。
答案 5 :(得分:0)
感谢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
}