Ich erstelle ein EPoS-System für ein Universitätsprojekt, aber ich bin in eine Mauer gerannt mit einem komplexen Code, der Ereignisargumente betrifft.C# Nullreferenz, die Probleme bei benutzerdefinierten EventArgs verursacht
Diese Codeabschnitte befinden sich auf einem Zahlungsformular, das das Ende einer Transaktion behandelt. Ich habe die PaymentMadeEvent als so erklärt:
public delegate void PaymentMadeEvent(object sender, paymentMadeEventArgs e);
public event PaymentMadeEvent PaymentForm_PaymentMade;
Next Ich habe einen Booleschen Wert in einer separaten öffentlichen Klasse am Ende der Codepage erklärt, wie so:
public class paymentMadeEventArgs: EventArgs
{
private bool paymentSuccess = true;
public bool PaymentSuccess
{
get { return paymentSuccess; }
set { paymentSuccess = value; }
}
}
Next I kopiert haben ein Beispiel Stück Code, das die Zahlung übernimmt, wenn es eingegeben:
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 });
}
}
der Fehler ist ein
System.NullReferenceException
, die von dieser Linie kommen hier zu sein scheint:
PaymentForm_PaymentMade(this, new paymentMadeEventArgs(){ PaymentSuccess = true });
Kann jemand sehen, was ich falsch mache?
Vielen Dank im Voraus.
Sind Sie sicher, dass Sie Abonnenten zu Ihrer Veranstaltung haben? –
"PaymentForm_PaymentMade" ist "null", wenn niemand diesem Ereignis zugewiesen wurde. BTW: "scheint von dieser Linie zu kommen" ist kein guter Weg, auf StackOverflow zu fragen! Eine Ausnahme hat immer einen Stack-Trace, der Ihnen _exactly_ sagt, wo der Fehler auftritt. Bitte fügen Sie diese Stapelverfolgung in Ihre nächste Frage ein. –
@DanielAWhite - So sehr ich diesen Typen liebe, es ist ein bisschen hart in diesem Fall, denn das ist ein bisschen ein Spezialfall eines NRE – Jamiec