olnm 发表于 2015-9-12 13:47:49

WM中的OutLook开发和操作

  昨天闲来无视,学习了一下WM的基本开发。看WM有约的那套教程心里痒痒,于是下载了SDK,看看DEMO,在Sample中的示例进行加工。小有一点心得。其实总的来说难度也不是很大,以前没有做过FORM的程序,都是WEB上面的开发,上手来看不是那么特别的困难也。

[*]如果大家不明白安装了SDK之后,如何简历新的项目,如何做调整属性和模拟器的使用。可以参考我的文章下面的,讲的非常的清楚。这里我就不过多的浪费时间做些重复的事情了。
[*]还是先看看效果好了,功能是比较简单的。建立自己的OutLook联系人,对其进行信息的发送和详细信息的管理。
[*]
[*]以上是功能的初始界面。没什么多说的。联系人的管理。ADD功能可以跳转到手机的电话簿进行添加。
[*]
[*]选中了联系人之后。进行编辑。或者是新建联系人界面也是如此的。OK保存,也就是Update。
[*]
[*]ADD之后的界面。
[*]
[*]
[*]
Code
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsMobile.PocketOutlook;
using Microsoft.WindowsMobile.Forms;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;
namespace SmsDefence
{
    public partial class Form1 : Form
    {
      private Contact contactSelect;
      private OutlookSession outLookSession;
      public Form1()
      {
            this.outLookSession = new OutlookSession();
            InitializeComponent();
            this.InitializeListBox();
      }
      public Contact Select()
      {
            this.ShowDialog();
            return this.contactSelect;
      }
      private void InitializeListBox()
      {
            this.listBox1.DataSource = null;
            this.listBox1.DataSource = this.outLookSession.Contacts.Items;
            this.listBox1.DisplayMember = "FileAs";
            this.listBox1.ValueMember = "ItemId";
      }
      private void button1_Click(object sender, EventArgs e)
      {
            MessageBox.Show("AlexLiu Software Development", "Warning", MessageBoxButtons.OK,   MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
      }
      private void menuItem1_Click(object sender, EventArgs e)
      {
            CreateNewConversation();
      }
      private void menuItem2_Click(object sender, EventArgs e)
      {
            this.Close();
      }
      private class Conversation
      {
            private Contact contact;
            private string transcript;
            private string phoneNumber;
            public Conversation(Contact c)
            {
                contact = c;
                phoneNumber = c.MobileTelephoneNumber;
            }
            public Contact Contact
            {
                get { return contact; }
            }
            public string Transcript
            {
                get { return transcript; }
            }
            public void AddToTranscript(string sender, string msg)
            {
                transcript = sender + ":" + msg + "\r\n" + transcript;
            }
            public string PhoneNumber
            {
                get { return phoneNumber; }
            }
            public override string ToString()
            {
                return contact.ToString();
            }
      }
      private void CreateNewConversation()
      {
            Conversation currentConv = null;
            ChooseContactDialog dlg = new ChooseContactDialog();
            dlg.RequiredProperties = new ContactProperty[] { ContactProperty.AllTextMessaging };
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                foreach (Conversation conv in listBox1.Items)
                {
                  if (conv.Contact.ItemId == dlg.SelectedContact.ItemId)
                  {
                        currentConv = conv;
                        break;
                  }
                }
            }
            if (currentConv == null)
            {
                currentConv = new Conversation(dlg.SelectedContact);
                listBox1.Items.Add(currentConv);
            }
            SwitchToConversation(currentConv);
      }
      private void SwitchToConversation(Conversation conversion)
      {
            listBox1.SelectedItem = conversion;
            txtMsg.Focus();
            
      }
      private void button5_Click(object sender, EventArgs e)
      {
            this.Close();
      }
      private void btnNew_Click(object sender, EventArgs e)
      {
            this.contactSelect = new Contact();
            this.outLookSession.Contacts.Items.Add(contactSelect);
            ContactEdit contactDialog = new ContactEdit();
            contactDialog.Edit(ref contactSelect);
            this.InitializeListBox();
      }
      private void btnEdit_Click(object sender, EventArgs e)
      {
            if (this.listBox1.SelectedItem != null)
            {
                contactSelect = this.listBox1.SelectedItem as Contact;
                ContactEdit contactDialog = new ContactEdit();
                contactDialog.Edit(ref contactSelect);
            }
            else { MessageBox.Show("you must select one contact"); }
      }
      private void btnSend_Click(object sender, EventArgs e)
      {
            try
            {
                contactSelect = this.listBox1.SelectedItem as Contact;
                if (null == this.outLookSession.SmsAccount)
                {
                  throw new ArgumentException("this account is not i");
                }
                SmsMessage s = new SmsMessage(contactSelect.MobileTelephoneNumber, this.txtMsg.Text);
                s.Body = this.txtMsg.Text;
                s.Send();
                MessageBox.Show("Message Sent");
            }
            catch (NullReferenceException ex)
            {
                MessageBox.Show(ex.ToString());
            }
      }
    }
}
[*]
[*]简要说明下:首先是Send方法,如果联系人的手机号码,不为空的话就可以进行信息的发送了。如果不为空,SDK中为我们提供了一个SmsMessage也是就是短信的发送类。新建一个对象s,初始化要指定发送的信息的内容的收件人的手机号码。s的body属性也就是信息体,是要发送的内容。对象的实例s调用Send()方法即可发送了。在Mobile中常用的也是对话框的弹出了。MessageBox.Show方法有几个重载的使用,其中最简单的就是指定弹出对话框所要显示的内容了。新建和编辑函数中的内容大体上面来说也是差不多的,新建的话就是把选中的联系人加入到OutLookSession联系中去。CreateNewConversation()函数,也就是点击ADD之后触发这个函数了,把联系人中的不重复加入进来。ChooseContactDialog这个类,建立一个对象之后,通过对象调用了ShowDialog方法即可进入到手机电话簿中联系人的选取中去。
[*]
Code
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsMobile.Forms;
using Microsoft.WindowsMobile.PocketOutlook;
namespace SmsDefence
{
    public partial class ContactEdit : Form
    {
      private Contact contactCreate;
      public ContactEdit()
      {
            InitializeComponent();
      }
      private void menuItem2_Click(object sender, EventArgs e)
      {
            this.Close();
      }
      private void menuItem1_Click(object sender, EventArgs e)
      {
            this.Close();
      }
      public void Edit(ref Contact contact)
      {
            contactCreate = contact;
            this.ShowDialog();
      }
      private void ContactEdit_Load(object sender, EventArgs e)
      {
            this.txtFirstName.DataBindings.Add("text", this.contactCreate, "FirstName");
            this.txtLastName.DataBindings.Add("text", this.contactCreate, "LastName");
            this.txtCompany.DataBindings.Add("text", this.contactCreate, "CompanyName");
            this.txtEmail.DataBindings.Add("text", this.contactCreate, "Email1Address");
            this.txtWorkPhone.DataBindings.Add("text", this.contactCreate, "BusinessTelephoneNumber");
            this.txtMobile.DataBindings.Add("text", this.contactCreate, "MobileTelephoneNumber");
      }
      private void btnOK_Click(object sender, EventArgs e)
      {
            this.contactCreate.FileAs = this.contactCreate.LastName + "," + this.contactCreate.FirstName;
            this.contactCreate.Update();
            this.Close();
      }
    }
}
[*]以上的代码是另一个FORM的内容。其主要功能就是对联系人进行编辑或者是新建:当点击OK的时候触发的也就是BTNOK这个onclick时间了,重要的一个方法就是Update()对所做的操作进行更新。Close()我想不必说了。FORM的关闭。Edit方法中无非就是数据的绑定。


[*]参考文章 WM有约:http://www.cnblogs.com/allenlooplee/archive/2009/01/14/1375941.html?CommentID=1440147#Post
页: [1]
查看完整版本: WM中的OutLook开发和操作