Я создаю систему EPoS для университетского проекта, но я столкнулся с кирпичной стеной с фрагментом сложного кода, касающегося аргументов событий.
Эти фрагменты кода находятся в платежной форме, которая обрабатывает завершение транзакции. Я объявил PaymentMadeEvent так:
public delegate void PaymentMadeEvent(object sender, paymentMadeEventArgs e);
public event PaymentMadeEvent PaymentForm_PaymentMade;
Затем я объявил логическое значение в отдельном общедоступном классе внизу кодовой страницы следующим образом:
public class paymentMadeEventArgs: EventArgs
{
private bool paymentSuccess = true;
public bool PaymentSuccess
{
get { return paymentSuccess; }
set { paymentSuccess = value; }
}
}
Затем я скопировал пример кода, который обрабатывает платеж при его вводе:
private void PaymentHasBeenMade(object sender, EventArgs e)
{
try
{
total = decimal.Parse(txtBoxAmountToPay.Text) - decimal.Parse(txtBoxAmountTendered.Text);
}
catch
{
MessageBox.Show("An Error has occured, please enter a valid amount.");
return;
}
if(total >0)
{
txtBoxAmountToPay.Text = String.Format("{0:c}", total);
}
else
{
MessageBox.Show("Please give " + String.Format("{0:c}", -total) + " in change.");
PaymentForm_PaymentMade(this, new paymentMadeEventArgs(){ PaymentSuccess = true });
}
}
Ошибка
System.NullReferenceException
который, кажется, исходит из этой строки здесь:
PaymentForm_PaymentMade(this, new paymentMadeEventArgs(){ PaymentSuccess = true });
Может ли кто-нибудь увидеть, что я делаю неправильно?
Заранее спасибо.
PaymentForm_PaymentMade
равноnull
, если никто не подписался на это событие. Кстати: кажется, что эта строка исходит из этой строки, это не лучший способ спросить в StackOverflow! Исключение всегда имеет трассировку стека, которая сообщает вам точно, где возникает ошибка. Пожалуйста, включите эту трассировку стека в свой следующий вопрос. - person René Vogt   schedule 24.03.2016