2013-11-26 2 views
-3

Я работаю над проектом (простой телефонной книгой) для личного использования. Я показываю свои контакты в списке, а контакты хранятся в XML-файле. Он содержит данные о контактах, такие как имя, город, адрес, день рождения и т. Д. В принципе, я хотел бы получать уведомление, когда он является днем ​​рождения контакта с помощью значка уведомления (воздушного шара).C# - Уведомление о деньгах

Например:

<People> 
    <Person> 
    <Name>John</Name> 
    <Hometown>Washington</Hometown> 
    <Address>231 Main Street</Address> 
    <Birthday>130299511993682082</Birthday> 
    <Phone>555-555-555</Phone> 
    <Email>[email protected]</Email> 
    <AdditionalInfo>Skype: john.123</AdditionalInfo> 
    </Person> 
<People> 

В этом случае значок уведомляет должен появиться, когда это день рождения Джона. Я полностью застрял здесь, так как я понятия не имею, как это сделать. Теоретически, он должен искать дни рождения в файле XML, а затем сравнивать его с текущей датой. Если это совпадение, появится значок уведомления. Проблема в том, что я не знаю, чтобы сделать это сам.

Это часть моего частного void Main_Load (отправитель объекта, EventArgs e), где я загружаю контакты в список. Я думал, что могу использовать p.Birthday как-то, но единственное, что приходит мне в голову, это то, что (p.Birthday == DateTime.Now), но это, безусловно, не правильный способ делать что-то.

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
    string phonebook_path = path + "\\Phonebook\\Contacts.xml"; 
    if (!File.Exists(phonebook_path)) 
    { 
     XmlTextWriter xW = new XmlTextWriter(phonebook_path, Encoding.UTF8); 
     xW.WriteStartElement("People"); 
     xW.WriteEndElement(); 
     xW.Close(); 
    } 
    XmlDocument xDoc = new XmlDocument(); 
    xDoc.Load(phonebook_path); 
    foreach (XmlNode xNode in xDoc.SelectNodes("People/Person")) 
    { 
     Person p = new Person(); 
     p.Name = xNode.SelectSingleNode("Name").InnerText; 
     p.Hometown = xNode.SelectSingleNode("Hometown").InnerText; 
     p.Address = xNode.SelectSingleNode("Address").InnerText; 
     p.Birthday = DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode("Birthday").InnerText)); 
     p.Phone = xNode.SelectSingleNode("Phone").InnerText; 
     p.Email = xNode.SelectSingleNode("Email").InnerText; 
     p.AdditionalInfo = xNode.SelectSingleNode("AdditionalInfo").InnerText; 
     people.Add(p); 
     listView1.Items.Add(p.Name); 
    } 

Любые идеи?

+1

Если у вас нет кода, вы должны опубликовать свой хотя бы процесс/идеи. В stackoverflow у вас будет гораздо больше шансов получить ответ, когда вы поймете понимание проблемы. Подобный вопрос, требующий полного решения, часто считается слишком широким для ответа. – ChrisK

+0

OMG, разве я уже опубликовал то, что я придумал ?! «Теоретически, он должен искать дни рождения в XML-файле, а затем сравнивать его с текущей датой. Если это совпадение, появится значок уведомления. Проблема в том, что я не знаю, чтобы сделать это сам». И это «где мои знания прекращаются. Если бы у меня уже был четкий план, как это сделать, я бы, конечно, вас не беспокоил. Единственная часть, которую я не могу сделать сам, это проверить, соответствует ли сегодняшняя дата чьему-либо дню рождения в моем XML-файле, остальное - «кусок пирога». –

+1

Вы знаете, как читать XML-файл? В каком формате День рождения? И что ты пробовал? – Harrison

ответ

1

Сравнивая даты не так уж трудно, но я хотел бы предложить вам изменить формат даты на что-то, что может быть распознан DateTime.Parse(string) как MM/DD/YY msdn article on parsing
Когда дата находится в более совместимый формат, вы можете использовать что-то вроде

if (DateTime.Compare(DateTime.Parse(p.Birthday.ToString()).Date, DateTime.Now.Date) >= 0) 
     { 
      //Show a notify box because the person's birthday is later than or equal to the current date 
     } 

я получил, что из msdn article on comparing dates
что касается значок уведомления, что это легко. Я использую эту функцию, которую я получил от msdn article on notify icons

private void ShowNotifyIcon(string title, string message, int secondsToShow) 
{ 
    NotifyIcon notifyIcon = new NotifyIcon(); 
    notifyIcon.Visible = true; 
    notifyIcon.Icon = this.Icon; 
    notifyIcon.BalloonTipTitle = title; 
    notifyIcon.BalloonTipText = message; 
    notifyIcon.ShowBalloonTip(secondsToShow * 1000); 
} 

Надежда это помогает!

+0

Спасибо, мой друг, в отличие от остальных ребят, ты действительно помог мне! Ура! –

 Смежные вопросы

  • Нет связанных вопросов^_^