我正在製作個人使用的項目(簡單電話簿)。我在列表視圖中顯示我的聯繫人,聯繫人存儲在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);
}
任何想法?
如果你沒有代碼,你應該發佈你的過程/想法。在stackoverflow中,當你顯示對問題的理解時,你將有更高的回答機會。像這樣的一個問題,要求一個完整的解決方案,通常被認爲太寬泛而無法回答。 – ChrisK
OMG,我還沒有發佈我想出來的東西?! 「理論上,它應該在XML文件中查找生日,然後將其與當前日期進行比較,如果匹配,則會顯示通知圖標,問題是我不知道自己做這件事。而那個'我的知識停止的地方。如果我已經有明確的計劃如何做到這一點,我一定不會打擾你。我自己做不到的唯一部分是檢查今天的日期是否與我的XML文件中某人的生日相匹配 - 其餘部分是「小菜一碟」。 –
你知道如何閱讀XML文件嗎?生日是什麼格式?你有什麼嘗試? – Harrison