2016-03-18 5 views
1

Я бы назвал btnSubmit, если определенные условия в axTws1_tickPrice верны. Как мне это сделать?вызовите частную пустоту из другой частной пустоты в C#

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) 
    } 
} 

ответ

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 
} 
0

просто назвать его с текущими параметрами.

if (Condition) 
{ 
    butSubmit(sender, null) 
} 
0

Невероятно, но

btnSubmit_Click(null,null); 

Или другие аргументы в случае необходимости.

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 внутри метода. в такой ситуации назовите их, как я предложил выше.

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()); 
0

Спасибо Стив и Хари - это хорошо работал

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 
} 
+0

Если один из ответов помочь вам, вы должны нажать на флажок рядом с ним, чтобы пометить его как принято, а не вывешивать «спасибо " ответ. – Steve

Смежные вопросы