WM中的OutLook开发和操作

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

  • 如果大家不明白安装了SDK之后,如何简历新的项目,如何做调整属性和模拟器的使用。可以参考我的文章下面的,讲的非常的清楚。这里我就不过多的浪费时间做些重复的事情了。
  • 还是先看看效果好了,功能是比较简单的。建立自己的OutLook联系人,对其进行信息的发送和详细信息的管理。
  • wmLearning1
  • 以上是功能的初始界面。没什么多说的。联系人的管理。ADD功能可以跳转到手机的电话簿进行添加。
  • WMLearning2
  • 选中了联系人之后。进行编辑。或者是新建联系人界面也是如此的。OK保存,也就是Update。
  • WMLearning4
  • ADD之后的界面。
  • WMLearning3
  • ContractedBlock.gifExpandedBlockStart.gifCode
    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方法即可进入到手机电话簿中联系人的选取中去。
  • ContractedBlock.gifExpandedBlockStart.gifCode
    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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果手机运行python_iPhone是卖的最好的手机?用Python照样把他玩弄鼓掌之间!

关于 iOS 的技术解读有很多,但是却鲜有设备可视化同步的介绍文章。本文一起了解下这个酷炫的 iOS 黑科技。我们的任务很简单——如上图所示,实时获取设备的当前方向。 UIDevice.current.orientation 首先,需要调用 beginGeneratingDeviceOrie…

这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了

生活中简单平常的事物和现象背后,往往有着奇妙的原理,赶快跟着一起来看看涨点知识吧! 夹心雪糕的制作原理 ▼ 难怪雪糕大小,厚度都一模一样 原来都是从一个模子里出来的 ▼ 煎饼可以统一翻面 再也不用担心烤焦了 ▼ 冰淇淋蛋筒的制…

自定义 ocelot 中间件输出自定义错误信息

自定义 ocelot 中间件输出自定义错误信息Introocelot 中默认的 Response 中间件在出错的时候只会设置 StatusCode 没有具体的信息,想要展示自己定义的错误信息的时候就需要做一些自定义了,对 ocelot 中的 Response 中间件做了一些小改动,实现…

shapenet网络_GRNet网络:3D网格进行点云卷积,实现点云补全

Date:2020-11-23作者:三弟来源:GRNet网络:3D网格进行点云卷积,实现点云补全Gridding Residual Network for Dense Point Cloud Completion在点云分割方面,有一些方法尝试通过更通用的卷积操作来捕捉点云的空…

c语言随机数循环延迟,C语言生成随机数的函数、延时函数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼下面C语言代码使用了生成随机数的函数、延时函数。请大家仔细观察其显示效果。从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定修改。同时还应关注其参数的定义位…

盘点小坏蛋的礼物

我们家小坏蛋一天天长大了,妈妈从觉得很辛苦过渡到习惯了很辛苦,苦中作乐的妈妈终于抽出空来写博客啦! 为什么叫他小坏蛋呢?因为他吃饭不乖。没满月的时候蛮乖的,每顿奶都吃的很香,咕咚咕咚的喝下去&#x…

《笨办法学python》6_笨办法学Python 习题 25: 更多更多的练习

我们将做一些关于函数和变量的练习,以确认你真正掌握了这些知识。这节练习对你来说可以说是一本道:写程序,逐行研究,弄懂它。 不过这节练习还是有些不同,你不需要运行它,取而代之,你需要将它导入到 python …

为什么对gRPC做负载均衡会很棘手?

在过去的几年中,随着微服务的增长,gRPC在这些较小的服务之间的相互通信中获得了很大的普及,在后台,gRPC使用http/2在同一连接和双工流中复用许多请求。使用具有结构化数据的快速,轻便的二进制协议作为服务之间的通信介质确实很有吸…

给新手程序猿的16个必备小妙招

写在前面: 这个文章核心并不是程序优化的具体技巧,而是拿到一个问题如何思考和利用工具的通用方法。比如即使我们不知道 profiler 这个东西,通过搜索"代码 每一行 时间"也可以很快知道有这样的工具叫做 profiler,并且学…

openkruise 缩容_Linus 本尊也来了!为什么 KubeCon 越来越火了?

原标题:Linus 本尊也来了!为什么 KubeCon 越来越火了?2015年11月,第一届 KubeCon 在美国旧金山开始的时候,还只是个200人的小会议,2019年的7月,KubeCon 第二次在中国举办,就有 3500 …

你可能不知道的C#语言特性

关键字 yield 通常用于迭代器中,向IEnumerable对象提供值或者结束迭代。 如: yield return expression; yield break; var 用于定义隐式类型的变量。 var i 5; var s "Hello"; 注意隐式类型(Implicitly typed)并不是…

c语言中文件如何插入数据,急求如何将下列C语言程序数据存储到文件中?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中。#include int n0;int rest[7][7]; //全局声明,以供全局调用int main(){void perm(int list[],int ,int );int …

python字符串设置字体_python怎么更改字符串后几位

python更改字符串后几位的方法:可以利用replace()函数来实现。replace()函数可以把字符串中的旧字符串替换成新字符串,并返回替换后的新字符串。具体使用方法如:【str.replace("is", "was")】。可以利用replace()函数来修…

使用 Tye 辅助开发 k8s 应用竟如此简单(二)

续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中使用服务发现。服务发现 - 微服务开发不可缺少的部件 服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。《…

程序猿的双十一最佳攻略

讲个恐怖故事 一年一度虐汪“光棍节”又来了 小天拍拍(不存在的)胸脯告诉大家 这个节日 我陪你们 买买买! 限时特惠专场 1 welcome 7天教你学会数学建模及Matlab编程 数学建模涉及的内容比较广泛,比如碎纸片问题中所涉及的图像识…

傅里叶变换音频可视化_HTML5如何实现音频可视化频谱跳动

本篇教程探讨了HTML5如何实现音频可视化频谱跳动&#xff0c;希望阅读本篇文章以后大家有所收获&#xff0c;帮助大家HTML5CSS3从入门到精通 。<html>HTML5音频可视化频谱跳动代码* {margin: 0;padding: 0;}#canvas {display: block;background: linear-gradient(135deg,…

android websocket封装,Android WebSocket 方案选型OkHttp

目前Android WebSocket 框架 主要包括:SocketIOJava-WebSocketOkHttp WebSocket一开始我首选的是采用SocketIO方案&#xff0c;因为考虑该方案封装接口好&#xff0c;提供异步回调机制&#xff0c;但和后端同事沟通发现目前客户端的SocketIO不支持ws wss协议, 所以无奈只能放弃…

关于Word中审阅的一个问题!

前两天&#xff0c;在帮一个杂志撰稿的过程中&#xff0c;有一个关于Word审阅的问题。&#xff08;以下内容以Word2007为例&#xff09; 本身&#xff0c;审阅的应用不算困难。 我们可以为文章添加“批注”&#xff0c;或是你的上级对文章进行修改&#xff0c;他们可以开启“审…

ASP.NET Core - 在ActionFilter中使用依赖注入

上次ActionFilter引发的一个EF异常,本质上是对Core版本的ActionFilter的知识掌握不够牢固造成的&#xff0c;所以花了点时间仔细阅读了微软的官方文档。发现除了IActionFilter、IAsyncActionFilter的问题&#xff0c;还有一个就是依赖注入在ActionFilter上的使用也是需要注意的…

魏尔斯特拉斯函数与分形图形的动画演示

一般人会直觉上认为连续的函数必然是近乎可导的。即使不可导&#xff0c;所谓不可导的点也必然只占整体的一小部分。根据魏尔斯特拉斯在他的论文中所描述&#xff0c;早期的许多数学家&#xff0c;包括高斯&#xff0c;都曾经假定连续函数不可导的部分是有限或可数的。这可能是…