<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CsToD</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CsToD]]></copyright><item><title><![CDATA[FromHandle与FromChildHandle的区别]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/6529891</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/6529891</guid><author>CsToD</author><pubDate>Tue, 07 Jun 2011 16:21:00 +0800</pubDate><description><![CDATA[我在使用PropertyControl插件的时候,经常遇到一个问题,就是无法用窗口探测器探测到WebBrowser,原因很简单,探测到的句柄本身并不是Control对象,可能是它的一个子控件,而这个控件并没有封装成System.Windows.Forms.Control对象,所以解决办法是:如果FromHandle返回null,则继续枚举其父控件,只到找到为止,本来想自己写的,无意中发现了Fr]]></description><category></category></item><item><title><![CDATA[Visual Studio调试时，中断在非托管的导出函数]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/6293265</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/6293265</guid><author>CsToD</author><pubDate>Fri, 01 Apr 2011 08:02:00 +0800</pubDate><description><![CDATA[<br />1.项目属性-调试-启用非托管代码调试<br />2.工具-选项-调试-本机，加载DLL导出]]></description><category></category></item><item><title><![CDATA[引用类型与地址之间的转换]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/6291277</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/6291277</guid><author>CsToD</author><pubDate>Thu, 31 Mar 2011 11:58:00 +0800</pubDate><description><![CDATA[<br />很早之前就在网上找到引用对象转地址的方法，后来自己研究出了地址转引用类型的方法，当时很兴奋，还准备把自己的研究过程写下来。<br /> <br />今天要用下这个功能，居然发现没有任何记录，敢情当初忘了写了？<br /> <br />又费了好半天功能，才把这个功能重写了一次，这次就不写过程了，直接上代码：<br /> <br /> <br />        IntPtr ObjectToAddress(object obj)
        {
            GCHandle g]]></description><category></category></item><item><title><![CDATA[托管函数的挂钩（完美版）]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/6262506</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/6262506</guid><author>CsToD</author><pubDate>Sun, 20 Mar 2011 11:52:00 +0800</pubDate><description><![CDATA[我之前发过一篇叫“托管函数的挂钩”的文章，实现了对MarshalByRefObject继承树下的实例函数的挂钩。最近，在CodeProject上看到一个关于托管函数挂钩的文章，发现作者的方法很好用，但是正好不能用于MarshalByRefObject继承树下的实例函数（作者本人并没有发现这个问题），于是两种方法正好互补你也许要用，我为什么要强调MarshalByRefObject继承树呢？这是因为非常多的类都存在于该类的继承树下，比如很多人习惯把代码写在自己的窗体类中，而Form就在MarshalByRef]]></description><category></category></item><item><title><![CDATA[注意了，由于代码优化，可能导致调试时源代码不匹配]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5801806</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5801806</guid><author>CsToD</author><pubDate>Tue, 10 Aug 2010 16:14:00 +0800</pubDate><description><![CDATA[最近出现一怪事：调试时断点不匹配，而且找不到标识符例如：void Foo(){int a=SomeMethod();//断点在这一行Console.WriteLine("OK");}我把断点设在第一行，调试时居然自动跑到第二行去了；而且我想在监视窗口中看一下a的值，结果提示我当前上下文不存在名称a类似的问题出现好几次了，我的感觉就是符号文件出问题了，Clean之后问题依旧今天又遇到这个问题了，突然一想，会不会是因为编译成Release的原因呢？（手头这个项目之前已经完成了，最近有点改动，所以没有改成Debu]]></description><category></category></item><item><title><![CDATA[发送电子邮件]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5801557</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5801557</guid><author>CsToD</author><pubDate>Tue, 10 Aug 2010 15:05:00 +0800</pubDate><description><![CDATA[很早之前就用过，不过每次要使用的时候还是要在网上查一下，所以干脆写下来，以备后用。为了方便使用，做了几个重载：public class EMailSender
{
    public static void SendEMail(string senderAddress, string password, string host, string receiverAddress, string subject, string body, string attachmentFile = null, stri]]></description><category></category></item><item><title><![CDATA[解决使用用户控件时，由于使用了当前路径导致设计器不能正常工作的问题]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5445426</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5445426</guid><author>CsToD</author><pubDate>Fri, 02 Apr 2010 16:43:00 +0800</pubDate><description><![CDATA[当在用户控件中使用当前路径时，如果使用下列方法，可能会导致设计器不能正常工作： Environment.CurrentDirectoryPath.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)Path.GetDirectoryName(Assembly.GetEntryAssembly().Loca]]></description><category></category></item><item><title><![CDATA[WPF版的WindowFromPoint]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5363217</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5363217</guid><author>CsToD</author><pubDate>Wed, 10 Mar 2010 00:27:00 +0800</pubDate><description><![CDATA[在Win32 API中，有一个非常有用的函数，叫做：WindowFromPoint而在WPF中，有一个类型的函数，叫做：HitTest(InputHitTest)，但是这个函数探测的太深了，往往会探测到控件的子元素上去于是我写了一个WPF版的WindowFromPoint函数，为了在一个函数里实现全部的功能，使用了Lambda表达式的递归实现（估且叫伪递归吧），所以对很多人来说，可能会显然]]></description><category></category></item><item><title><![CDATA[WPF学习心得（3）——触发器]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5025573</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5025573</guid><author>CsToD</author><pubDate>Thu, 17 Dec 2009 15:11:00 +0800</pubDate><description><![CDATA[WPF学习心得（3）  触发器 触发器包括以下几种：属性触发器 EventTrigger 和 Storyboard MultiTrigger、DataTrigger 和 MultiDataTrigger 本系统讨论其中的两种：属性触发器和事件触发器，由于属性只能出现在样式中，故本文只讨论事件触发器，属性触发器的内容将在样式一章中涉及。 示例代码如下：]]></description><category></category></item><item><title><![CDATA[WPF学习心得（2）——模板]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5019641</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5019641</guid><author>CsToD</author><pubDate>Wed, 16 Dec 2009 16:36:00 +0800</pubDate><description><![CDATA[WPF学习心得（2）  模板 首先声明，我这里所说的模板，专指WPF中的控件模板(ControlTemplate)，而其它的一些模板，如数据模板(DataTemplate)等不在本文的讨论范畴。 模板适用于这样一种场合：控件在功能上满足程序的要求，但界面上不能（或不方便）满足程序的要求，比如说：我们更改一个控件的外观，都是基于其已有的属性——要更改其背景色，设置Back]]></description><category></category></item><item><title><![CDATA[WPF学习心得（1）——资源]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/5011669</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/5011669</guid><author>CsToD</author><pubDate>Tue, 15 Dec 2009 15:14:00 +0800</pubDate><description><![CDATA[WPF学习心得（1）  资源    WPF中的资源一般是指资源字典(DictionaryResource)中的元素，可以把任何对象置于其中以便访问。    要获得一个资源字典，可以新建：ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    x]]></description><category></category></item><item><title><![CDATA[C#程序集加载方法]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4887049</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4887049</guid><author>CsToD</author><pubDate>Fri, 27 Nov 2009 11:04:00 +0800</pubDate><description><![CDATA[ 原文: http://blog.youkuaiyun.com/podded/archive/2008/10/27/3158687.aspx  要从程序集的元数据中获取程序集的信息，首先需要加载程序集。.Net中加载程序集方法有几种，本人结合自己的实践和认识简单介绍一下。描述不一定很准确，请提出来一起进步。一、隐式加载        没有被显式加载但被引用的程序集，CLR会按照全局程序集缓存（GA]]></description><category></category></item><item><title><![CDATA[如何用代码打开系统的“运行”对话框]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4793611</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4793611</guid><author>CsToD</author><pubDate>Tue, 10 Nov 2009 13:26:00 +0800</pubDate><description><![CDATA[如何用代码打开系统的“运行”对话框这个问题我很早之前就知道了，但今天要用的时候，居然给忘了，查了好半天才搞出来，所以这里有必要记录一下，另外也可以了解一下COM的调用及C#4.0中的Dynamic Lookup。所谓“运行”对话框，就是开始菜单里的那个运行，其快捷键为Windows+R，相信很多人都用过，我这里介绍三种方法来打开“运行”对话框：一、模拟按键由于.NET类库里的Sen]]></description><category></category></item><item><title><![CDATA[对象的深层拷贝]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4390600</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4390600</guid><author>CsToD</author><pubDate>Wed, 29 Jul 2009 14:15:00 +0800</pubDate><description><![CDATA[遇到这么个问题，没有参考任何资料，自己想了个方法对于自定义的一些简单类型还好，遇到.Net里一些复杂的类就无能为力了，不知道还有什么更好的方法。  class CsToD{    //基本思想是：一个对象所占据的内存空间，取决于它的实例字段（包括继承树上的私有实例字段）    public T DeepCloneObject(T obj) where T : class    { ]]></description><category></category></item><item><title><![CDATA[如何获得一个对象的引用的类型]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4381161</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4381161</guid><author>CsToD</author><pubDate>Sun, 26 Jul 2009 11:28:00 +0800</pubDate><description><![CDATA[很早就有一个疑问：class Father{}class Son:Father{}Father obj=new Son();如何写一个方法，得到obj的引用的类型为Father，而其本身的类型为Son呢？ 以前只知道调用obj.GetType()就得到了其自身的类型Son，但是一直不知道怎么得到其引用的类型，这两天不经意间研究出来了一个方法：  vo]]></description><category></category></item><item><title><![CDATA[对象的深拷贝]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4377596</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4377596</guid><author>CsToD</author><pubDate>Fri, 24 Jul 2009 17:19:00 +0800</pubDate><description><![CDATA[今天遇到一个问题，如何深层拷贝一个对象？ 想了一个方法，前提是所有相关类型都必须具有公共、无参、实例构造函数。     public object DeepCloneObject(object obj)    {        object newObj = Activator.CreateInstance(obj.GetType());        foreach ]]></description><category></category></item><item><title><![CDATA[正则小技巧]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4365550</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4365550</guid><author>CsToD</author><pubDate>Tue, 21 Jul 2009 09:10:00 +0800</pubDate><description><![CDATA[ 前两天在优快云看到这样一个问题：给定一段文字的编码序列，如604F20007D59（你 好），如何得到其对应的文字有人给出了如下正则解决方案：            string input = "4F600020597D";            string patern = "(?            string output = Regex.Unescape(Regex.R]]></description><category></category></item><item><title><![CDATA[拆分字符串的几个技巧]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4305822</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4305822</guid><author>CsToD</author><pubDate>Mon, 29 Jun 2009 09:09:00 +0800</pubDate><description><![CDATA[1、  如何获得一个已知的字符串数组？例如你可能会这样做：String[]strs={“one”,”two”,”three”,”four”};这样显得有点复杂，更为简单的方法是：String[]strs=”one two three four”.Split();2、  如何获得一个已知的字符数组？跟上面类似，应该这样：Char[]cs=”abcde”.ToCharArr]]></description><category></category></item><item><title><![CDATA[托管函数的挂钩]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4305288</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4305288</guid><author>CsToD</author><pubDate>Sun, 28 Jun 2009 21:33:00 +0800</pubDate><description><![CDATA[很早以前就想研究一下托管函数的挂钩，但是一直没有成功。前段时间又尝试了一次，竟然成功了，这让我十分的困惑——因为我几乎没有对代码做任何改变！ 这次实验距离以前已经有很长时间了，我实在想不出有什么不同之处，唯一的区别就是以前用的是控制台程序，这次是WinForm程序，但我想不可能是这个原因吧？不过我还是尝试了一下，未曾料到竟真是如此！ 我当然不会相信这样的灵异事件！ 于是我想]]></description><category></category></item><item><title><![CDATA[C#深入剖析(2)——析构函数 ]]></title><link>https://blog.youkuaiyun.com/CsToD/article/details/4274823</link><guid>https://blog.youkuaiyun.com/CsToD/article/details/4274823</guid><author>CsToD</author><pubDate>Tue, 16 Jun 2009 23:00:00 +0800</pubDate><description><![CDATA[第二篇    析构函数 析构函数在C#中已经很少使用了，以至于很多人已经把它淡忘了，虽然用处不大，研究一下也无妨。 一． 析构函数的特征： 析构函数只能存在于类中，而不能存在于结构中；析构函数不能有任何修饰符，包括访问控制修饰符，静态修饰符，抽象修饰符，虚拟修饰符等都不能有；析构函数没有参数，这就意味着不能有任何重载。 二． 析构函数的调用时机： 析构函数会在对象被垃圾收集器回收时调用，但垃圾收集]]></description><category></category></item></channel></rss>