随笔分类 -  DotNet

Why is button background defaulting to grey when IsPressed is true
摘要:Hey all, I have a simple problem. Using the IsPressed trigger i want to be able to set the background color of a button to something other than the default grey. Here is what the button looks like when it is not pressedand here is what it looks like when it is clicked Here is the trigger for the but 阅读全文

posted @ 2012-05-26 12:15 刺客mrchenzh 阅读(233) 评论(0) 推荐(0)

Wpf开源收集
摘要:1,到底有哪些开源MVVM框架? 前面介绍了WPF的基本概念和一些相关知识,我们了解到开发WPF应用程序可以使用现成的框架和模式,最为合适的莫过于时下正热的MVVM模式,所以这里我们也列出针对MVVM模式的已有开源框架: 图3 上面除了WPFToolKit和MEF之外都是一些常用的MVVM框架,连带自己开发的一共是八个,所以自己也取了一个响亮的名字——MVVM 八大框架!圣殿骑士本人实际项目中只用到了三个框架,之前WPF使用过MVVM Helpers,在Silverlight项目当中用过MVVMLight+MEF,后来就一直使用自己开发的框架,其他框架也研究了很长时间,但都是为了开发MV... 阅读全文

posted @ 2012-05-23 16:07 刺客mrchenzh 阅读(3363) 评论(2) 推荐(3)

.Net WinForm 控件键盘消息处理剖析
摘要:在WinForm控件上我们可以看到很多关于键盘消息处理的方法,比如OnKeyDown, OnKeyPress, ProcessCmdKey, ProcessDialogKey,IsInputKey等等,那么这些方法是如何被组织的,每一个方法的具体含义又是什么哪?Win32的键盘消息又是如何到达控件上的这些方法的,本文将着重阐述这些问题,对.Net WinForm控件的键盘消息处理过程进行剖析。 1.WinForm消息循环大家都知道WinForm也是依赖于底层的消息机制的,通常我们的WinForm应用程序会以如下方式启动:Code highlighting produced by Actipro 阅读全文

posted @ 2012-05-15 11:30 刺客mrchenzh 阅读(216) 评论(0) 推荐(0)

ProcessCmdKey
摘要:http://msdn.microsoft.com/en-us/library/7tas5c80.aspx当你在使用此自定义的DataGridView日历列时,可能会想要在编辑日历单元格的时候点击Tab键不结束编辑,这时你就可以重写一下CalendarEditingControl.ProcessCmdKey方法来截获按键。如果你只是想不做任何处理,那么你大可以直接返回true在你判断当前按键是Tab。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { i... 阅读全文

posted @ 2012-05-15 11:20 刺客mrchenzh 阅读(541) 评论(0) 推荐(0)

C#与C++类型对应 (转)
摘要:http://blog.csdn.net/zhouzhangkui/archive/2010/05/30/5635398.aspxview plaincopy to clipboardprint?C#与C++之间类型的对应 Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char DOUBLE Double DWORD Int32 or UInt32 FLOAT Single HANDLE (and all other handle types, such as 阅读全文

posted @ 2012-05-15 10:26 刺客mrchenzh 阅读(225) 评论(0) 推荐(1)

Probably more than you want to know about keyboarding in Windows Forms
摘要:The reason why keyboard handling is so complex, is because, well it’s just complex. Before a control can get called on the OnKeyDown/Press/Up event, we need to filter out several things Shortcuts which execute menu commands (e.g. Control+O on a MenuItem)Navigational keys which shift focus (Tab, arro 阅读全文

posted @ 2012-05-15 10:25 刺客mrchenzh 阅读(393) 评论(0) 推荐(0)

C#高低位
摘要:在c的写法是这样 xPos = LOWORD(lParam); // horizontal position of cursor yPos = HIWORD(lParam); // vertical position of cursor c#中是这样 int xPos = lParam.ToInt32() & 0x00001111; int yPos = (lParam.ToInt32() & 0x11110000) >> 16; 阅读全文

posted @ 2012-05-14 17:02 刺客mrchenzh 阅读(411) 评论(0) 推荐(0)

一站式WPF--依赖属性(DependencyProperty)一
摘要:Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能,这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。 这段是MSDN上对依赖属性(DependencyProperty)的描述。主要介绍了两个方面,WPF中提供了可用于扩展CLR属性的服务;被这个服务支持的属性称为依赖属性。 单看描述,云里雾里的,了解一个知识,首先要知道它产生的背景和为什么要有它,那么WPF引入依赖属性是为了解决什么问题呢? 从属性说起 属性是我们很熟悉的,封装类的字段,表示... 阅读全文

posted @ 2012-05-09 10:07 刺客mrchenzh 阅读(230) 评论(0) 推荐(0)

关于WM_NCHITTEST消息
摘要:我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下: 通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口。 一个容易想到的方案是,处理鼠标消息WM_LBUTTONDOWN和WM_LBUTTONUP。在OnLButtonUp函数中计算鼠标位置的变化,调用MoveWindow实现窗口的移动。 注意,拖动标题栏移动窗口的时候,会出现一个矩形框,它提示了窗口移动的当前位置。当鼠标左键放开的时候,窗口就移动到矩形框所在位置。而我们的实现方案中没有这个功能。 要实现此功能,我们必须自己来画这些矩形。 事实上,我们没有必要自... 阅读全文

posted @ 2012-05-03 16:32 刺客mrchenzh 阅读(221) 评论(0) 推荐(0)

WPF 基础系列2—WPF前世今生
摘要:1.开篇前言 很多时分了解一项新技术的汗青和趋势经常比这项技术的自身价值还要首要。WPF作为一项新技术(曾经三年多了,或者应该叫老技术了),大家都有需要了解它 的前因后果,特殊是公司的CTO、技术总监、架构师等决策层,因为他们对技术的选型及应器具有抉择权。关于开辟者来说,了解自己正在从事的这个技术的前世 此生,有助于大家更好的熟悉技术自身的价值,也能够避免大家少走一些弯路(圣殿骑士 就走过很多弯路,所以对此比较慨叹)。从IT技术展开的这些年能够看出,技术关于各大公司只是竞争的一种伎俩,而关于大多半轨范员来说技术就是特饭碗以至 于生命,所以人人站的立场分歧,也会构成各自分歧的观念。放眼如... 阅读全文

posted @ 2012-05-03 11:35 刺客mrchenzh 阅读(944) 评论(1) 推荐(0)

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

posted @ 2012-05-03 11:04 刺客mrchenzh 阅读(254) 评论(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 阅读(213) 评论(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 阅读(276) 评论(0) 推荐(0)

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

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

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 阅读(273) 评论(0) 推荐(0)

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

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

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

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

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 阅读(1121) 评论(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 阅读(320) 评论(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 阅读(710) 评论(0) 推荐(0)

导航