我想使用具有字符串参数的委托作为事件。生成警告,我应将事件的第一个参数声明为发送方,将第二个参数声明为事件Args。我需要清除所有警告。
//the declaration of my delegate
public delegate void saisieDateTime(string dateTime);
public event saisieDateTime EventSaisieDate;
private void button_valider_Click(object sender, EventArgs e)
{
if (Year.Text != "" && Months.Text != "" && Day.Text != "" && Hour.Text
!= "" && Min.Text != "" && Sec.Text != "")
Datestr = Day.Text + "/" + Months.Text + "/" + Year.Text + " " +
Hour.Text + ":" + Min.Text + ":" + Sec.Text;
else
{
Datestr = "";
MessageBox.Show("Format invalide");
}
//I call the event
if (EventSaisieDate != null)
{
EventSaisieDate(Datestr);
this.Close();
}
else if (EventSaisieDateTime != null)
{
EventSaisieDateTime(Datestr);
Close();
}
}
答案 0 :(得分:-1)
如警告所述,您应遵循the Microsoft documentation中规定的事件标准模式。
首先,创建自定义EventArgs子类:
public class SaisieDateEventArgs : EventArgs
{
public string Date { get; }
public class SaisieDateEventArgs(string date)
{
Date = date;
}
}
然后将您的事件声明为:
public event EventHandler<SaisieDateEventArgs> EventSaisieDate;
并提出为:
EventSaisieDate?.Invoke(this, new SaisieDateEventArgs(Datestr);
您这样订阅:
something.EventSaisieDate += HandleSaisieDate;
位置:
private void HandleSaisieDate(object sender, SaisieDateEventArgs args)
{
// Look at args.Date
}