2013-11-26 14 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文件中查找生日,然後將其與當前日期進行比較。如果匹配,則應顯示通知圖標。問題是我不知道自己做這個。

這是我的private void Main_Load(object sender,EventArgs e)的一部分,其中我將聯繫人加載到列表視圖中。我想我可以使用p.Birthday,但唯一讓我想到的是if(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

非常感謝我的朋友,與其他人不同,你真的幫助了我!乾杯! –