2012年5月3日

Control.Invoke与消息队列

摘要: MSDN上关于Control.Invoke的描述是:在拥有此控件的基础窗口句柄的线程上执行指定的委托。 先不考虑主是怎么找到那个拥有控件的基础窗口句柄的线程的,看看后半句,“在某个线程上执行指定的委托”,这个比较有意思。让一个正在运行的线程去执行另 一个指定的任务,这似乎不大可能。因为,任何程序都是顺序执行的,除了程序中的跳转指令外,没有任何东西可以让程序直接跑到另一个毫不相干的地址去执行。 在我们确定了线程的入口后,就没有什么东西可以干预线程的执行过程了,除非把它Drop掉。 那么,这里是怎么回事呢?微软如何让一个线程从正在执行的任务中暂停,而让它去执行另一个任务,完后再转回去继续执行原.. 阅读全文

posted @ 2012-05-03 11:04 刺客mrchenzh 阅读(244) 评论(0) 推荐(0) 编辑

WinForm 之Control.Invoke 和Control.BeginInvoke 方法的使用

摘要: WinForm 之Control.Invoke 和Control.BeginInvoke 方法的使用 Control 不能在创建它的 Thread 之外被调用。但可以通过 invoke 来保证 Control 线程安全。 在跨线程更新的时候,Control 会检查 CurrentThread 是否为创建 Control 的线程,并报错! 示例代码如下: 示例代码 privatevoidbtnStart_Click(objectsender,EventArgse){//注意:特地不使用Timer控件Threadthread=newThread(Fun);thread.Start(DateT... 阅读全文

posted @ 2012-05-03 10:36 刺客mrchenzh 阅读(196) 评论(0) 推荐(0) 编辑

我理解的invoke和begininvoke 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解。 首先说下,invoke和begininvoke的使用有两种情况: 1. control中的invoke、begi

摘要: 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解。 首先说下,invoke和begininvoke的使用有两种情况: 1. control中的invoke、begininvoke。 2. delegrate中的invoke、begininvoke。 这两种情况是不同的,我们这里要讲的是第1种。下面我们在来说下.NET中对invoke和begininvoke的官方定义。 control.invoke(参数delegate)方法:在拥有此控件的基础窗口句柄的线程上执行指定的委托。 control.begininvok... 阅读全文

posted @ 2012-05-03 10:28 刺客mrchenzh 阅读(262) 评论(0) 推荐(0) 编辑

C#线程:BeginInvoke和EndInvoke方法

摘要: 开发语言:C#3.0 IDE:Visual Studio 2008 一、C#线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多 个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows 任务管理器,这时我们就会看到这个应用程序中所含有的线程数,如下图所示。 如果任务管理器没有“线程数”列,可以【查看】>【选择列】来显示“线程计数”列。从上图可以看出,几乎所有的进程都拥有两个以上的线程。从而可以看出,线程是 阅读全文

posted @ 2012-05-03 09:50 刺客mrchenzh 阅读(203) 评论(0) 推荐(0) 编辑

2012年5月2日

MaskedTextBox掩码元素一览

摘要: 掩码元素说明0数字,必选。此元素将接受 0 到 9 之间的任何一个数字。9数字或空间,可选。#数字或空间,可选。如果掩码中该位置为空白,在 Text 属性中将把它呈现为一个空格。允许使用加号 (+) 和减号 (-)。L字母,必选。将输入限定为 ASCII 字母 a-z 和 A-Z。此掩码元素等效于正则表达式中的 [a-zA-Z]。?字母,可选。输入限定为 ASCII 字母 a-z 和 A-Z。此掩码元素等效于正则表达式中的 [a-zA-Z]?。&字符,必选。如果 AsciiOnly 属性设置为 true,此元素的行为将与“L”元素类似。C字符,可选。任何非控制字符。如果 AsciiOn 阅读全文

posted @ 2012-05-02 22:49 刺客mrchenzh 阅读(265) 评论(0) 推荐(0) 编辑

包含GDI+绘图的窗体滚动

摘要: 包含GDI+绘图的窗体滚动 上面例子只使用了windows系统标准控件,而下面我们将面对另一种情形。这时,我们要不使用 或不仅仅使用windows标准控件(这样做有很多理由,或许因为标准控件并不能获得用户界面需要的灵活性),要在屏幕上自行绘图。很明显,这是使用 GDI+绘图的领域(GDI+绘图包括许多相关的知识,这里不展开讲解,你可以参见专门的文章),这一领域下的文档管理与windows对标准控件的管理 有很大的不同。 1、滚动管理差异 GDI+下的文档管理与windows对标准控件的管理有很大的不同。尤其地,应用程序不能自行管理窗口的滚动,除非你在代码中进行了相应的编程。也就是说,我们需.. 阅读全文

posted @ 2012-05-02 10:13 刺客mrchenzh 阅读(376) 评论(0) 推荐(0) 编辑

2012年4月28日

使用鼠标拖放复制文本

摘要: 现在的很多软件都有一个通用的功能:使用鼠标拖放复制文本,该功能使用户的输入更加方便快捷,那么该功能是如何实现的呢?本实例将对使用鼠标拖放复制文本功能的实现过程进行详细讲解,实例运行效果如图1.17所示。 图1.17 使用鼠标拖放复制文本 本实例实现时主要用到了TextBox控件的DoDragDrop方法、DragEventArgs类的Data属性和Effect属性以及DataObject类的GetData方法,下面分别对它们进行详细讲解。 (1)TextBox控件的DoDragDrop 方法 该方法用来开始拖放操作,其语法格式如下:publicDragDropEffectsDoDra... 阅读全文

posted @ 2012-04-28 09:49 刺客mrchenzh 阅读(623) 评论(0) 推荐(0) 编辑

2012年4月9日

TSF(Text Service Framework)简介

摘要: ------------------------------------------------------------------大家好,我是Mike,微软拼音的开发工程师。这里简单介绍下Windows里一种不同于传统IMM的强大可扩展的输入框架。------------------------------------------------------------------ 几个关于TSF的术语 TIP (Text Input Processor), a Text service in TSF Cicero,TSF的开发代号,所以微软内部通常称呼TSF框架为Cicero... 阅读全文

posted @ 2012-04-09 15:56 刺客mrchenzh 阅读(925) 评论(0) 推荐(0) 编辑

C#实现动态生成Word

摘要: 1. 一个控制台例子,实现动态生成Word。首先,添加引用:COM->Microsoft Word 11.0 Object Library。 using System; using System.Collections.Generic; using System.Linq; using System.... 阅读全文

posted @ 2012-04-09 11:22 刺客mrchenzh 阅读(308) 评论(0) 推荐(0) 编辑

C#:简单实现动态数据生成Word文档并保存

摘要: 今天正好有人问我,怎么生成一个报表式的Word文档。 就是文字的样式和位置相对固定不变,只是里面的内容从数据中读取。 我觉得类似这种的一般用第三方报表来做比较简便。但既然要求了Word,只好硬着头皮来。 网上的方法大多数都是从一个GridView或表中获得数据后向Word中添加一个表格。 但不方便实现下面的效果(图1)。(以下插图可能需要CSDN用户登录后才能看到) (图1) 我们使用Word模板来实现,方法如下: 1、首先需要向工程中的“引用”加入Word类库的引用(图2)。我是Office 2003。其他版本可能略有不同。在COM里面。 (图2) ... 阅读全文

posted @ 2012-04-09 11:21 刺客mrchenzh 阅读(668) 评论(0) 推荐(0) 编辑

导航