2013-11-26 1 views
-3

개인적 용도로 프로젝트 (간단한 전화 번호부) 작업 중입니다. 내 연락처를 listview에 표시하고 연락처는 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 파일에서 생일을 찾아서 현재 날짜와 비교해야합니다. 일치하는 경우 알림 아이콘이 나타납니다. 문제는 나 자신이 이것을하는 것을 모른다.

이것은 내 개인 무효 Main_Load (개체 보낸 사람, EventArgs 전자)의 일부로, 연락처를 목록보기에로드합니다. 나는 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

어려운,하지만 난 당신이 날짜가 더 호환 형식으로되면 MM/DD/YY msdn article on parsing
처럼 DateTime.Parse(string) 인식 할 수있는 일에 날짜 형식을 변경하는 것이 제안되어 있지 날짜를 비교, 당신은 내가 알림 아이콘에 대한 msdn article on comparing dates
로에서, 그 쉬운 것을 가지고

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 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

대단히 고맙습니다. 다른 친구들과 달리, 당신은 진정으로 저를 도왔습니다! 건배! –