在c#中提升事件 - 需要帮助

时间:2017-10-15 13:24:32

标签: c# events

你好我试图在一个人的出生日期大于实际日期时举起一个事件。

我对事件感到陌生,似乎无法发挥作用。

代码在下面,

namespace LibClassLuchthaven
{
    public class Person
    {

        public DateTime Birthdate { get; set; }

        public string Firstname { get; set; }
        public Gender Gender { get; set; }
        public string Name { get; set; }

        public event EventHandler BirthdateInFuture;

        public Person()
        {
            this.Birthdate = DateTime.Now;
            this.Firstname = string.Empty;
            this.Gender = Gender.unknown;
            this.Name = string.Empty;
        }
        public Person(DateTime birthdate, string firstname, Gender gender, string name)
        {
            this.Birthdate = birthdate;
            this.Firstname = firstname;
            this.Gender = gender;
            this.Name = name;
        }
        public void OnBirthdateInFuture()
        {

            if (BirthdateInFuture!=null)
            {
                if (this.Birthdate > DateTime.Now)
                {
                    BirthdateInFuture(this, EventArgs.Empty);
                }

            }

        }


        public override string ToString()
        {
            return  this.Name + ", " + this.Firstname + " - " + this.Birthdate + " ( +" + this.Gender + ")";
        }
    }
}

public partial class FormCrewManagement : Form
{

    public Person person = new Person();


    public FormCrewManagement()
    {
        InitializeComponent();

        person.BirthdateInFuture += Person_BirthdateInFuture;

    }

    private void Person_BirthdateInFuture(object sender, EventArgs e)
    {
        MessageBox.Show("Birthdate is in the future");
    }

3 个答案:

答案 0 :(得分:2)

尝试更改属性

datetime.strptime(d,"%Y%m%d%H").strftime("%d/%m/%Y %H:%M:%S")

public DateTime Birthdate { get; set; }

这将在将来生日值时引发事件。

答案 1 :(得分:0)

看起来问题可能是合乎逻辑的,而不是与事件有关。您将生日设置为今天的日期...然后检查它是否会更晚。它永远不会。

.align-text-top

答案 2 :(得分:0)

菲利普 代码中没有地方引发事件。您可以创建一个名为BirthDate的属性,并在setter部分中引发事件。当生日变更为未来日期时,它会/可能会提升事件。