使用具有事件字符串参数的委托
Using a delegate having a string parameter for an event
我想使用具有字符串参数的委托作为事件。生成一条警告,我应该将事件的第一个参数声明为发送者,将第二个参数声明为事件参数。我需要清除所有警告。
//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();
}
}
正如警告所说,您应该遵循 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
}
我想使用具有字符串参数的委托作为事件。生成一条警告,我应该将事件的第一个参数声明为发送者,将第二个参数声明为事件参数。我需要清除所有警告。
//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();
}
}
正如警告所说,您应该遵循 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
}