Чтобы добавить в компонент "Калькулятор" методы и события, выполните следующие действия

1. Объявите делегаты для событий, которые будут использоваться компонентом для передачи значений в форму.

Примечание
Несмотря на то что будет объявлено четыре события, должны быть созданы только три делегата, поскольку два события будут иметь одинаковые сигнатуры.

2. Сразу под объявлением переменных, сделанным на предыдущем шаге, введите следующий код.

 

// This delegate will be invoked with two of your events.

public delegate void FactorialCompleteHandler(double Factorial, double TotalCalculations);

public delegate void AddTwoCompleteHandler(int Result, double TotalCalculations);

public delegate void LoopCompleteHandler(double TotalCalculations, int Counter);

Объявите события, используемые компонентом для связи с приложением. Для этого добавьте следующий код непосредственно под кодом, введенным на предыдущем шаге.

public event FactorialCompleteHandler FactorialComplete;

public event FactorialCompleteHandler FactorialMinusOneComplete;

public event AddTwoCompleteHandler AddTwoComplete;

public event LoopCompleteHandler LoopComplete;

3. Сразу после предыдущего кода введите следующий код.

// This method will calculate the value of a number minus 1 factorial

// (varFact2-1!).

public void FactorialMinusOne()

{

double varTotalAsOfNow = 0;

double varResult = 1;

// Performs a factorial calculation on varFact2 - 1.

for (int varX = 1; varX <= varFact2 - 1; varX++)

{

varResult *= varX;

// Increments varTotalCalculations and keeps track of the current

// total as of this instant.

varTotalCalculations += 1;

varTotalAsOfNow = varTotalCalculations;

}

// Signals that the method has completed, and communicates the

// result and a value of total calculations performed up to this

// point.

FactorialMinusOneComplete(varResult, varTotalAsOfNow);

}

 

// This method will calculate the value of a number factorial.

// (varFact1!)

public void Factorial()

{

double varResult = 1;

double varTotalAsOfNow = 0;

for (int varX = 1; varX <= varFact1; varX++)

{

varResult *= varX;

varTotalCalculations += 1;

varTotalAsOfNow = varTotalCalculations;

}

FactorialComplete(varResult, varTotalAsOfNow);

}

 

// This method will add two to a number (varAddTwo+2).

public void AddTwo()

{

double varTotalAsOfNow = 0;

int varResult = varAddTwo + 2;

varTotalCalculations += 1;

varTotalAsOfNow = varTotalCalculations;

AddTwoComplete(varResult, varTotalAsOfNow);

}

 

// This method will run a loop with a nested loop varLoopValue times.

public void RunALoop()

{

int varX;

double varTotalAsOfNow = 0;

for (varX = 1; varX <= varLoopValue; varX++)

{

// This nested loop is added solely for the purpose of slowing down

// the program and creating a processor-intensive application.

for (int varY = 1; varY <= 500; varY++)

{

varTotalCalculations += 1;

varTotalAsOfNow = varTotalCalculations;

}

}

LoopComplete(varTotalAsOfNow, varLoopValue);

}

 

 

Передача введенных пользователем данных в компонент

Следующим шагом является добавление в форму frmCalculations кода для получения введенных пользователем данных, а также для обмена значениями с компонентом Calculator.