65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 个人组织者

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (29投票s)

2003 年 8 月 6 日

2分钟阅读

viewsIcon

172112

downloadIcon

9156

本文将帮助您用 C# 创建自己的个人组织者

引言

我创建这个应用程序是为了方便地访问我经常使用的应用程序,而无需点击桌面快捷方式。我还希望有一个地方来跟踪我所有的个人联系人及其信息,例如手机号码和电子邮件地址。我不想使用 Outlook 来跟踪所有这些信息,因为它很麻烦,而且我不在家里使用它。我想要一个简单且基于 xml 的便携式程序。根据您的个人需求定制此应用程序只需几秒钟。

特点

当您运行该应用程序时,如果您单击“工具”按钮,然后选择“我的联系人”,您将看到我创建的用于存储我所有个人联系人信息的应用程序,如图所示。这些信息存储在一个名为 My_Contacts.xml 的 xml 文件中。通过此界面很容易添加和删除联系人,它会为您完成所有的 xml 操作和更新。此应用程序的一个很酷的功能是,当您打开它时,如果您右键单击可折叠面板背后的蓝色背景,您可以添加和删除您想留给自己的提醒笔记。我认为这很有用,但您可能不这么认为。

使用代码

这个应用程序并不复杂或涉及很多内容,但我认为它很有用,所以我想其他人也可能会觉得有用。

下面的代码显示了如何在 xml 文件中添加/更新联系人信息。首先,我从 Windows 控件中提取数据,然后将其发送到辅助函数,该函数将数据添加到 My_Contacts.xml 文件中。第二个函数在搜索 My_Contacts.xml 文件中的所有已输入个人联系人后,返回一个 MyContacts 对象(在代码中定义),从而创建您的个人联系人列表以进行显示。

private void AddContact( XmlDocument XmlDoc, int iContactID,
string sFullName, string sCellPhone, string sHomePhone,
string sEmail, string sEmail2, string sAddress, string sCity,
string sState, string sZip, string sBDay )
{
    XmlElement xNodeParent = XmlDoc.DocumentElement;
    XmlElement xElemInvestment = XmlDoc.CreateElement( TagContact );
    xElemInvestment.SetAttribute( TagContactID, m_iNextID.ToString() );
    xNodeParent.AppendChild( xElemInvestment );

    sFullName = txt_Name.Text;
    sCellPhone = txt_Cell.Text;
    sHomePhone = txt_Home.Text;
    sEmail = txt_Email.Text;
    sEmail2 = txt_Email2.Text;
    sAddress = txt_Address.Text;
    sCity = txt_City.Text;
    sState = cmb_State.Text;
    sZip = txt_Zip.Text;
    sBDay = dt_DateTimePicker.Value.ToLongDateString();
           //ToString("yyy-MM-dd");

    // Add the child elements that make up the Contact element.

    AddXmlElement( XmlDoc, xElemInvestment, TagFullName, sFullName );
    AddXmlElement( XmlDoc, xElemInvestment, TagCellPhone, sCellPhone ); 
    AddXmlElement( XmlDoc, xElemInvestment, TagHomePhone, sHomePhone );
    AddXmlElement( XmlDoc, xElemInvestment, TagEmail, sEmail );
    AddXmlElement( XmlDoc, xElemInvestment, TagEmail2, sEmail2 ); 
    AddXmlElement( XmlDoc, xElemInvestment, TagStreetAddress, sAddress );
    AddXmlElement( XmlDoc, xElemInvestment, TagCity, sCity ); 
    AddXmlElement( XmlDoc, xElemInvestment, TagState, sState );
    AddXmlElement( XmlDoc, xElemInvestment, TagZipCode, sZip );
    AddXmlElement( XmlDoc, xElemInvestment, TagBDay, sBDay );
    // Commit changes to disk file.

    m_XmlDocument.Save( m_sXmlFileName );

    m_iContactID;
}

// This is how I'm getting your contacts from the My_Contacts.xml file

private XmlElement FindContactInXmlFile( XmlDocument doc, 
    string sContactID )
{
    XmlElement xNodeFound = null;

    XmlElement xRoot = doc.DocumentElement;

    XmlNodeList xNodeList = xRoot.GetElementsByTagName( TagContact );

    foreach( XmlNode xNodeContact in xNodeList ) 
    {  
        if( xNodeContact is System.Xml.XmlElement)
        {
            XmlElement xContact = (XmlElement) xNodeContact;

            string sIDFound = xContact.GetAttribute( "ContactID" );

            if( sIDFound != null && sIDFound == sContactID )
            {
                xNodeFound = xContact;
                break;
            }
        }
    }
    return xNodeFound;
}

关注点

通过使用 xml 扁平文件代替数据库,存储和检索数据的可能性是无限的。

我要感谢的人

我要感谢 Marc Clifton 提供的 Outlook Bar,这是一个很棒的控件。我更改了几个小地方,但这是一个一流的提交。我还想感谢 Derek Lakin 提供的 Windows XP 风格的可折叠面板栏,这也是一个很棒的控件!

历史

  • 版本 1.0.0 2003/7/31

引言

© . All rights reserved.