前一阵,公司需求做一个C#的邮件收发系统。实现C#邮件收发并不困难,这里就不多说了。我遇到的问题是在输入收件人的时候需要进行收件人的联想,比如:我的通讯录中有aa@126.com 这么一位联系人,我在文本框中输入a的时候,自然就能联想出这个联系人。其实实现这个也不难。代码如下:
this.textBox1.AutoCompleteCustomSource.AddRange(new string[] {
"aa@126.com"});
this.textBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.textBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
只要这样就可以实现联想功能。
不过又遇到了一个问题,就是邮件的收件人可以是多个,用分号隔开。这样的话,上面的代码就不能实现我们需要的功能了。因为微软封装的方法是从文本框的第一个字符开始匹配的。所以只能靠自己了。
其实说白了就是对字符串的各种操作。然后把结果保存到XML中(也就相当于存到通讯录中),以下是部分核心代码:
/// <summary>
/// 将从未出现过的收件人添加到XML文档中
/// </summary>
void nameToXml(string name)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("LinkMan.xml");
XmlNode root = xmlDoc.SelectSingleNode("MailTo"); //查找<bookstore>
XmlElement xe1 = xmlDoc.CreateElement("name"); //创建一个<book>节点
&