﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-twzheng's cppblog-文章分类-C#</title><link>http://www.cppblog.com/twzheng/category/5665.html</link><description>『站在风口浪尖紧握住鼠标旋转！』  人在台北心在汉</description><language>zh-cn</language><lastBuildDate>Mon, 15 Mar 2010 04:03:19 GMT</lastBuildDate><pubDate>Mon, 15 Mar 2010 04:03:19 GMT</pubDate><ttl>60</ttl><item><title>求windows xp 繁体版</title><link>http://www.cppblog.com/twzheng/articles/109710.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Sun, 14 Mar 2010 16:05:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/109710.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/109710.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/109710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/109710.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/109710.html</trackback:ping><description><![CDATA[求windows xp 繁体版，最好是台湾版的，要能一步步的手动安装(想装双系统)<br><br>找了好几天了，很多资源都下不动<br><br>今天好不容易下了一个，但是香港版的，且安装到选择盘符时，键盘所有键都不能使用，所以还是无法安装<br><br>谢谢各位大哥大姐帮帮忙，小弟感激不尽！<img src ="http://www.cppblog.com/twzheng/aggbug/109710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2010-03-15 00:05 <a href="http://www.cppblog.com/twzheng/articles/109710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#字符串操纵总结</title><link>http://www.cppblog.com/twzheng/articles/77284.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Fri, 20 Mar 2009 03:02:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/77284.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/77284.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/77284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/77284.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/77284.html</trackback:ping><description><![CDATA[<div><strong>1.获得汉字的区位码</strong><br>　　byte[] array = new byte[2];<br>　　array = System.Text.Encoding.Default.GetBytes("啊");</div>
<div>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> int i1 = (short)(array[0] - ''\0'');<br>　　int i2 = (short)(array[1] - ''\0'');</div>
<div><strong>2.unicode解码方式下的汉字码</strong><br>　　array = System.Text.Encoding.Unicode.GetBytes("啊");<br>　　i1 = (short)(array[0] - ''\0'');<br>　　i2 = (short)(array[1] - ''\0'');</div>
<div><strong>3.unicode反解码为汉字<br></strong>&nbsp;<wbr>&nbsp;<wbr> string str = "4a55";<br>&nbsp;<wbr>&nbsp;<wbr> string s1 = str.Substring(0,2);<br>&nbsp;<wbr>&nbsp;<wbr> string s2 = str.Substring(2,2);</div>
<div>&nbsp;<wbr>&nbsp;<wbr> int t1 = Convert.ToInt32(s1,16);<br>&nbsp;<wbr>&nbsp;<wbr> int t2 = Convert.ToInt32(s2,16);</div>
<div>&nbsp;<wbr>&nbsp;<wbr> array[0] = (byte)t1;<br>&nbsp;<wbr>&nbsp;<wbr> array[1] = (byte)t2;</div>
<div>&nbsp;<wbr>&nbsp;<wbr> string s = System.Text.Encoding.Unicode.GetString(array);</div>
<div><strong>4.default方式反解码为汉字</strong><br>　　array[0] = (byte)196;<br>　　array[1] = (byte)207;<br>　　s = System.Text.Encoding.Default.GetString(array);</div>
<div><strong>5.取字符串长度</strong><br>　　s = "iam方枪枪";<br>　　int len = s.Length;//will output as 6<br>　　byte[] sarr = System.Text.Encoding.Default.GetBytes(s);<br>　　len = sarr.Length;//will output as 3+3*2=9</div>
<div><strong>6.字符串相加</strong><br>　　System.Text.StringBuilder sb = new System.Text.StringBuilder("");<br>　　sb.Append("i ");<br>　　sb.Append("am ");<br>　　sb.Append("方枪枪");</div>
<div><strong>7.使用split分割字符串</strong><br>&nbsp;<wbr>&nbsp;<wbr> 第一种方法：<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string s=abcdeabcdeabcde;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string[] sArray=s.Split(c) ;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> foreach(string i in sArray)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(i.ToString());<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 输出下面的结果:<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ab<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> deab<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> deab<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> de</div>
<div>&nbsp;<wbr>&nbsp;<wbr> 第二种方法：我们看到了结果是以一个指定的字符进行的分割。使用另一种构造方法对多个字符进行分割:<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string s=abcdeabcdeabcde<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string[] sArray1=s.Split(new char[3]{c,d,e}) ;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> foreach(string i in sArray1)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(i.ToString());<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 可以输出下面的结果：<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ab<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ab<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ab</div>
<div>&nbsp;<wbr>&nbsp;<wbr> 第三种方法：除了以上的这两种方法以外,第三种方法是使用正则表达式。新建一个控制台项目。然后先添加 using System.Text.RegularExpressions;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> System.Text.RegularExpressions<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string content=agcsmallmacsmallgggsmall<wbr>ytx;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string[]resultString=Regex.Split&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> (content,small,RegexOptions.IgnoreCase)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> foreach(string i in resultString)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(i.ToString());<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 输出下面的结果:<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> agc<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> mac<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ggg<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ytx</div>
<div>&nbsp;<wbr>&nbsp;<wbr> 第四种方法：<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string str1=我*****是*****一*****个*****教*****师;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string[] str2;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> str1=str1.Replace(*****,*) ;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> str2=str1.Split(*) ;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> foreach(string i in str2)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr> Console.WriteLine(i.ToString());</div>
<div>&nbsp;<wbr>&nbsp;<wbr> 第五种方法：<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string str1=我**是*****一*****个*****教*****师;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 我希望显示的结果为:我是一个教师。<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 我如果采用上面的第四种方法来做就会产生下面的错误：我&nbsp;<wbr>&nbsp;<wbr> 是一个教师。中间有空格输出，所以输出结果并不是希望的结果，这就又回到了正则表达式了，这时可以采用下面的第五种方法：<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string str1=我**是*****一*****个*****教*****师;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> foreach(string i in str2)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(i.ToString());<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 这里通过[*]+ 巧妙的完成了我们的目标。</div>
<div><strong>8.标记</strong><br>标记（tokenizing）是从文本中提取具体内容的过程。<br>下面的代码从句子中提取单词，并把它们输出到控制台。<br>class mytokenizing<br>{<br>&nbsp;<wbr>&nbsp;<wbr> static void Main(string[ ] args)<br>&nbsp;<wbr>&nbsp;<wbr> {<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string mystring="I like this food,are you?";<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> char[] separators={' ',',','?',':','!'};<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> int startpos=0;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> int endpos=0;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> do<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> endpos=mystring.IndexOfAny(separators,startpos);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if ( endpos==-1 ) endpos=mystring.Length;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if ( endpos!=startpos )<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(mystring.Substring( startpos,(endpos-startpos)));<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> startpos=(endpos+1);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }while(startpos&lt;mystring.Length);<br>&nbsp;<wbr>&nbsp;<wbr> }<br>}<br>I&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ＜== 输出<br>like<br>this<br>food<br>are<br>you</div>
<div><strong>9.颠倒字符串次序</strong><br>class myreverse<br>{<br>&nbsp;<wbr>&nbsp;<wbr> static void Main(string [] args)<br>&nbsp;<wbr>&nbsp;<wbr> {<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> string mystring="你们好";<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> char[] mychars=mystring.ToCharArray( );<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Array.Reverse(mychars);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(mystring);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(mychars);<br>&nbsp;<wbr>&nbsp;<wbr> }<br>}<br>任何继承于Array的类都能利用Reverse( )方法为数组中的元素重新排序。</div>
<div><strong>10.字符串的插入、删除和替换</strong><br>示例文件test.txt为字符串的来源。下面代码以Unicode格式读取文本。确保文件保存为读取时的格式。例如记事本允许将代码保存为Unicode：<br>aaaaaaaa,bbbbbbbb,cccccc<br>dddddddd,eeeeeeee,ffffff<br>gggggggg,hhhhhhhh,iiiiii<br>jjjjjjjj,kkkkkkkk,llllll<br>下面代码加载数据并处理数据的测试工具。测试结果发送给控制台。<br>class myprocessfile<br>{<br>&nbsp;<wbr>&nbsp;<wbr> static void Main(string [] args)<br>&nbsp;<wbr>&nbsp;<wbr> {<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> const string myName="test.txt";<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Stream readLine;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> TextWirter writeLine;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> StringBuilder sb;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> readLine=File.OpenRead(myName);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> WriteLine=Console.Out;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> StreamReader readLineSReader=new StreamReader(readLine,Encoding.Unicode);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> readLineSReader.BaseStream.Seek(0,SeekOrigin.Begin);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> while(readLineSReader.Peek()&gt;-1)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> sb=new StringBuilder(readLineSReader.ReadLine());<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> //插入字符串操作语句如：sb.Append(",123");&nbsp;<wbr><br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(sb.ToString());<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }<br>&nbsp;<wbr>&nbsp;<wbr> }<br>}</div>
<div>在结尾添加一列内容：<br>//displays aaaaaaaa,bbbbbbbb,cccccc,xxxxx<br>//......<br>sb.Append(",xxxxx");</div>
<div>第一列可以使用下面的代码删除：<br>//displays bbbbbbbb,cccccc<br>//......<br>sb.Remove(0,sb.ToString().IndexOf(',')+1);</div>
<div>替换分隔符：<br>//aaaaaaaa+bbbbbbbb+cccccc<br>sb.Replace(',','+');</div>
<div>添加行号(lineNumber已经在前面某处声明过为前提)：<br>sb.Insert(0,lineNumber.ToString("000 "));<br>lineNumber++;</div>
<div>//displays<br>//000 aaaaaaaa,bbbbbbbb,cccccc<br>//001 dddddddd,eeeeeeee,ffffff<br>//002 gggggggg,hhhhhhhh,iiiiii<br>//003 jjjjjjjj,kkkkkkkk,llllll</div>
<div><strong>11.从字符串中提取子串</strong><br>StringBuilder 类没有支持子串的方法，因此必须用String类来提取。<br>string mystring="My name is ynn.";<br>//Displays "name is ynn."<br>Console.WriteLine(mystring.Substring( 3 ));<br>//Displays "ynn"<br>Console.WriteLine(mystring.Substring( 11,3 ));</div>
<div><strong>12、比较字符串</strong><br>String 类有四种方法：Compare( )、CompareTo( )、CompareOrdinal( )、Equals( )。<br>Compare( )方法是CompareTo( )方法的静态版本。只要使用&#8220;＝&#8221;运算符，就会调用Equals( )方法，的以Equals( )方法与&#8220;＝&#8221;是等价的。CompareOrdinal( )方法对两个字符串比较不考本地语言与文件。<br>示例：<br>int result;<br>bool bresult;<br>s1="aaaa";<br>s2="bbbb";<br>//Compare( )method<br>//result值为&#8220;0&#8221;表示等，小于零表示 s1 &lt; s2，大于零表示 s1 &gt; s2<br>result=String.Compare(s1,s2);<br>result=s1.CompareTo( s2 );<br>result=String.CompareOrdinal(s1,s2);<br>bresult=s1.Equals( s2 );<br>bresult=String.Equals( s1,s2 );<br>一个例外情况是，两个字符串都是内置的，并相等，静态方法要快得多。</div>
<div><strong>13、字符串格式化</strong></div>
<div><strong>13.1 格式化数字<br></strong>格式字符&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 说明和关联属性<br>-----------------------------<br>c、C&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 货币格式。<br>d、D&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 十进制格式。<br>e、E&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 科学计数（指数）格式。<br>f、F&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 固定点格式。<br>g、G&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 常规格式。<br>n、N&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 数字格式。<br>r、R&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 往返格式，确保将已转换成字符串的数字转换回数字时具有与原数字相同的值。<br>x、X&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 十六进制格式。<br>-----------------------------<br>double val=Math.PI;<br>Console.WriteLine(val.ToString( ));&nbsp;<wbr> //displays 3.14159265358979<br>Console.WriteLine(val.ToString("E"));//displays 3.141593E+000<br>Console.WriteLine(val.ToString("F3");//displays 3.142<br>int val=65535;<br>Console.WriteLine(val.ToString("x"));&nbsp;<wbr> //displays ffff<br>Console.WriteLine(val.ToString("X"));&nbsp;<wbr> //displays FFFF<br>Single val=0.123F;<br>Console.WriteLine(val.ToString("p"));&nbsp;<wbr> //displays 12.30 %<br>Console.WriteLine(val.ToString("p1"));&nbsp;<wbr> //displays 12.3 %<br>默认格式化会在数字和百分号之间放入一个空格。定制方法如下：<br>其中NumberFormatInfo类是System.Globalization命名空间的一个成员，因此该命名空间必须导入到程序中。<br>Single val=0.123F;<br>object myobj=NumberFormatInfo.CurrentInfo.Clone( ) as NumberFormatInfo;<br>NumberFormatInfo myformat=myobj as NumberFormatInfo;<br>myformat.PercentPositivePattern=1;<br>Console.WriteLine(val.ToString("p",myformat)); //displays 12.30%;<br>Console.WriteLine(val.ToString("p1",myformat)); //displays 12.3%;<br>格式化具有很大的灵活性。下面的例子演示一个没有意义的货币结构：<br>double val=1234567.89;<br>int [] groupsize={2,1,3};<br>object myobj=NumberFormatInfo.CurrentInfo.Clone( );<br>NumberFormatInfo mycurrency=myobj as NumberFormatInfo;<br>mycurrency.CurrencySymbol="#"; //符号<br>mycurrency.CurrencyDecimalSeparator<wbr>=":"; //小数点<br>mycurrency.CurrencyGroupSeparator="_";&nbsp;<wbr> //分隔符<br>mycurrency.CurrencyGroupSizes=groupsize;<br>// 输出　#1_234_5_67:89<br>Console.WriteLine(val.ToString("C",mycurrency));</div>
<div><strong>13.2 格式化日期</strong><br>输出形式取决于用户计算机的文化设置。<br>using System;<br>using System.Globalization;<br>public class MainClass<br>{<br>　　public static void Main(string[] args)&nbsp;<wbr><br>　　{<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> DateTime dt = DateTime.Now;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> String[] format = {"d","D","f","F","g","G","m","r","s","t", "T","u", "U","y","dddd, MMMM dd yyyy","ddd, MMM d \"'\"yy","dddd, MMMM dd","M/yy","dd-MM-yy",};<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> String date;<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> for (int i = 0; i &lt; format.Length; i++)<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Console.WriteLine(String.Concat(format[i], " :" , date));<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }<br>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }<br>}<br>d :07/11/2004&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &lt;=======输出<br>D :Sunday, 11 July 2004<br>f :Sunday, 11 July 2004 10:52<br>F :Sunday, 11 July 2004 10:52:36<br>g :07/11/2004 10:52<br>G :07/11/2004 10:52:36<br>m :July 11<br>r :Sun, 11 Jul 2004 10:52:36 GMT<br>s :2004-07-11T10:52:36<br>t :10:52<br>T :10:52:36<br>u :2004-07-11 10:52:36Z<br>U :Sunday, 11 July 2004 02:52:36<br>y :2004 July<br>dddd, MMMM dd yyyy :Sunday, July 11 2004<br>ddd, MMM d "'"yy :Sun, Jul 11 '04<br>dddd, MMMM dd :Sunday, July 11<br>M/yy :7/04<br>dd-MM-yy :11-07-04</div>
<div><strong>13.3 格式化枚举</strong><br>enum classmen<br>{<br>&nbsp;<wbr> ynn=1,<br>&nbsp;<wbr> yly=2,<br>&nbsp;<wbr> css=3,<br>&nbsp;<wbr> C++=4<br>}<br>获取枚举字符串信息如下：<br>classmen myclassmen=classmen.yly;<br>Console.WriteLine(myclassmen.ToString( ));&nbsp;<wbr>&nbsp;<wbr> //displays yly<br>Console.WriteLine(myclassmen.ToString("d")); //displays 2<br>从系统枚举中获取文本人信息如下：<br>DayOfWeek day=DayOfWeek.Friday;<br>//displays "Day is Friday"<br>Console.WriteLine(String.Format("Day is {0:G}",day));<br>格式化字符串&#8220; G &#8221;把枚举显示为一个字符串。</div><img src ="http://www.cppblog.com/twzheng/aggbug/77284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2009-03-20 11:02 <a href="http://www.cppblog.com/twzheng/articles/77284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在MDI多文档界面中，如何使子窗口只显示一次，当运行子窗口时如果已经打开了，则直接显示不再建立窗口的方法</title><link>http://www.cppblog.com/twzheng/articles/55594.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Tue, 08 Jul 2008 02:07:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/55594.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/55594.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/55594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/55594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/55594.html</trackback:ping><description><![CDATA[<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;menuItem3_Click(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">&nbsp;sender,&nbsp;System.EventArgs&nbsp;e)&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">菜单的CLICK事件</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_77_541_Open_Image onclick="this.style.display='none'; Codehighlighter1_77_541_Open_Text.style.display='none'; Codehighlighter1_77_541_Closed_Image.style.display='inline'; Codehighlighter1_77_541_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_77_541_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_77_541_Closed_Text.style.display='none'; Codehighlighter1_77_541_Open_Image.style.display='inline'; Codehighlighter1_77_541_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_77_541_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_77_541_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>Form1&nbsp;frm1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000">&nbsp;(Form&nbsp;ftemp&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.MdiChildren)&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">查找当前父表单所有子表单</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_178_332_Open_Image onclick="this.style.display='none'; Codehighlighter1_178_332_Open_Text.style.display='none'; Codehighlighter1_178_332_Closed_Image.style.display='inline'; Codehighlighter1_178_332_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_178_332_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_178_332_Closed_Text.style.display='none'; Codehighlighter1_178_332_Open_Image.style.display='inline'; Codehighlighter1_178_332_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_178_332_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_178_332_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ftemp&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;Form1)<br><img id=Codehighlighter1_232_318_Open_Image onclick="this.style.display='none'; Codehighlighter1_232_318_Open_Text.style.display='none'; Codehighlighter1_232_318_Closed_Image.style.display='inline'; Codehighlighter1_232_318_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_232_318_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_232_318_Closed_Text.style.display='none'; Codehighlighter1_232_318_Open_Image.style.display='inline'; Codehighlighter1_232_318_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_232_318_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_232_318_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(Form1)ftemp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(frm1&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;frm1.IsDisposed)<br><img id=Codehighlighter1_396_485_Open_Image onclick="this.style.display='none'; Codehighlighter1_396_485_Open_Text.style.display='none'; Codehighlighter1_396_485_Closed_Image.style.display='inline'; Codehighlighter1_396_485_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_396_485_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_396_485_Closed_Text.style.display='none'; Codehighlighter1_396_485_Open_Image.style.display='inline'; Codehighlighter1_396_485_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_396_485_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_396_485_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Form1();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm1.MdiParent&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm1.Show();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm1.Activate();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.cppblog.com/twzheng/aggbug/55594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2008-07-08 10:07 <a href="http://www.cppblog.com/twzheng/articles/55594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#实现“资源管理器”源码（带图标显示） </title><link>http://www.cppblog.com/twzheng/articles/55562.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Mon, 07 Jul 2008 12:06:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/55562.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/55562.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/55562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/55562.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/55562.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;//C#资源管理器源码using&nbsp;System;using&nbsp;System.Drawing;using&nbsp;System.Collections;using&nbsp;System.ComponentModel;using&nbsp;System.Windows.Forms;using&nbsp;System.Data;using&nbsp;System.I...&nbsp;&nbsp;<a href='http://www.cppblog.com/twzheng/articles/55562.html'>阅读全文</a><img src ="http://www.cppblog.com/twzheng/aggbug/55562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2008-07-07 20:06 <a href="http://www.cppblog.com/twzheng/articles/55562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从 DataTable 对象中删除 DataRow 对象 遇到的问题</title><link>http://www.cppblog.com/twzheng/articles/43469.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Fri, 29 Feb 2008 07:12:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/43469.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/43469.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/43469.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/43469.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/43469.html</trackback:ping><description><![CDATA[从 DataTable 对象中删除 DataRow 对象 遇到的问题<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我用DataTable的DataRow.Delete方法从表中删除一行时，界面是自动更新了（移除了刚才删除的行），DataRow.Count减了1，但是这时再次循环访问该DataTable，则抛出&#8220;不能通过已删除的行访问。。。&#8221;异常。在调试状态下查看DataTable删除操作后的数据显示，刚才删除行的位置确实没有数据，但该行并没有真正的删除，仍然占据着位置，所以再次循环访问到这行的时候会抛出异常。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用于从 DataTable 对象中删除 DataRow 对象的方法有两种：<span style="COLOR: #000000">DataRowCollection </span>对象的 Remove 方法和 DataRow 对象的 Delete 方法。Remove 方法从 DataRowCollection 中删除 DataRow，而 Delete 方法只将行标记为删除。当应用程序调用 AcceptChanges 方法时，才会发生实际的删除。通过使用 Delete，您可以在实际删除之前先以编程方式检查哪些行标记为删除。如果将行标记为删除，其 RowState 属性会设置为 Deleted。
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在将 DataSet 或 DataTable 与 DataAdapter 和关系型数据源一起使用时，用 DataRow 的 Delete 方法移除行。Delete 方法只是在 DataSet 或 DataTable 中将行标记为 Deleted，而不会移除它。而 DataAdapter 在遇到标记为 Deleted 的行时，会执行其 DeleteCommand 方法以在数据源中删除该行。然后，就可以用 AcceptChanges 方法永久移除该行。如果使用 Remove 删除该行，则该行将从表中完全移除，但 DataAdapter 不会在数据源中删除该行。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;DemonstrateDeleteRow()<br><img id=Codehighlighter1_36_1272_Open_Image onclick="this.style.display='none'; Codehighlighter1_36_1272_Open_Text.style.display='none'; Codehighlighter1_36_1272_Closed_Image.style.display='inline'; Codehighlighter1_36_1272_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_36_1272_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_1272_Closed_Text.style.display='none'; Codehighlighter1_36_1272_Open_Image.style.display='inline'; Codehighlighter1_36_1272_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_36_1272_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_36_1272_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Create&nbsp;a&nbsp;simple&nbsp;DataTable&nbsp;with&nbsp;two&nbsp;columns&nbsp;and&nbsp;ten&nbsp;rows.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;DataTable&nbsp;table&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DataTable(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">table</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DataColumn&nbsp;idColumn&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DataColumn(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">id</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type.GetType(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">System.Int32</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;idColumn.AutoIncrement</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DataColumn&nbsp;itemColumn&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DataColumn(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type.GetType(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">System.String</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;table.Columns.Add(idColumn);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;table.Columns.Add(itemColumn);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Add&nbsp;ten&nbsp;rows.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;DataRow&nbsp;newRow;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_510_619_Open_Image onclick="this.style.display='none'; Codehighlighter1_510_619_Open_Text.style.display='none'; Codehighlighter1_510_619_Closed_Image.style.display='inline'; Codehighlighter1_510_619_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_510_619_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_510_619_Closed_Text.style.display='none'; Codehighlighter1_510_619_Open_Image.style.display='inline'; Codehighlighter1_510_619_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_510_619_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_510_619_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newRow&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;table.NewRow();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newRow[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Item&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.Rows.Add(newRow);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;table.AcceptChanges();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DataRowCollection&nbsp;itemColumns&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;table.Rows;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;itemColumns[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Delete();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;itemColumns[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">].Delete();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;itemColumns[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">].Delete();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;itemColumns[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">].Delete();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(itemColumns[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">].RowState.ToString());<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Reject&nbsp;changes&nbsp;on&nbsp;one&nbsp;deletion.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemColumns[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">].RejectChanges();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Change&nbsp;the&nbsp;value&nbsp;of&nbsp;the&nbsp;column&nbsp;so&nbsp;it&nbsp;stands&nbsp;out.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemColumns[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">item</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Deleted,&nbsp;Undeleted,&nbsp;Edited</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Accept&nbsp;changes&nbsp;on&nbsp;others.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;table.AcceptChanges();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Print&nbsp;the&nbsp;remaining&nbsp;row&nbsp;values.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000">(DataRow&nbsp;row&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;table.Rows)<br><img id=Codehighlighter1_1208_1270_Open_Image onclick="this.style.display='none'; Codehighlighter1_1208_1270_Open_Text.style.display='none'; Codehighlighter1_1208_1270_Closed_Image.style.display='inline'; Codehighlighter1_1208_1270_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1208_1270_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1208_1270_Closed_Text.style.display='none'; Codehighlighter1_1208_1270_Open_Image.style.display='inline'; Codehighlighter1_1208_1270_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1208_1270_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1208_1270_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(row[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\table</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;row[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.cppblog.com/twzheng/aggbug/43469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2008-02-29 15:12 <a href="http://www.cppblog.com/twzheng/articles/43469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WPF简介、前景分析、影响程度、WPF资料</title><link>http://www.cppblog.com/twzheng/articles/37593.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Fri, 30 Nov 2007 16:36:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/37593.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/37593.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/37593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/37593.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/37593.html</trackback:ping><description><![CDATA[<strong>WPF简介、前景分析、影响程度、WPF资料<br></strong>摘自：http://www.cnblogs.com/tonyqus<br><br><strong>WPF简介<br><br></strong>WPF的全称是Windows Presentation Foundation，是微软新发布的Vista操作系统的三大核心开发库之一，其主要负责的是图形显示，所以叫Presentation（呈现）。
<p>作为新的图形引擎，WPF是基于DirectX的，当然增加了很多新的功能。其2D和3D引擎的强大看看Vista的界面就明白了，再加上其对Aero图形引擎的支持，更加让你刚到神奇。顺便提一下，Aero是专门为3D桌面开发的引擎，可以让桌面实现神奇的3D翻转，这绝对是操作系统有史以来的一次神奇尝试，虽然对硬件配置的要求也是惊人的，此前已有相关报道称，Vista对显卡十分挑剔就是出于运行Aero的考虑。</p>
<p><strong>WPF前景分析</strong></p>
<p>WPF其实不仅仅是图形引擎而已，它将给Windows应用程序的开发带来一次革命，因为新的架构提供了一种全新的开发模式。当然对于普通用户而言，最直观的就是界面越来越漂亮，看起来越来越舒服了；但对于开发人员而言，界面显示和代码将更好的得到分离，这与从前的桌面应用程序开发有很多不同（界面设置和代码是融合在一起的），这是比较具有革命性的改变之一。还有就是桌面应用程序和浏览器应用程序的融合，根据ms的承诺，正在开发中的WPF/E，即WPF Everywhere版本，将为基于WPF的应用程序提供全面的浏览器支持，这意味着未来开发出的应用程序将可以基于浏览器在不同的操作系统上运行，当然由于目前还在开发中，我们并不确定会不会有一定的限制，根据WPF/E开发组的定义，WPF/E仍然是WPF的子集，而不是后继版本。总体而言，WPF的前景应该是一片光明。</p>
<p><strong>目前开发界的对WPF响应程度</strong></p>
<p>目前已有很多人开始考虑或者已经转向WPF，一场新的学习热潮已经开始。但根据我最近的学习和了解，国内关于WPF的资料很少，除了msdn提供的资料以外，基本都是来自国外的资料，有些则是国外开发人员blog上的资料，当然都是英文的。因此如果现在能够引进一些WPF的书绝对是很好的时机。而且国外目前的几本WPF书也是刚刚上市，如果我们可以尽快引进的话，绝对可以帮助国内开发人员在最短时间内赶上国际步伐。</p>
<p><strong>目前微软针对WPF提供的服务和支持</strong></p>
<p>随着Vista RTM的发布，微软新一轮的技术推广已经开始。其实在此之前，WPF已经有很大的推广，因为CTP版本已经发布了有一段日子了。当然很多开发人员主要以技术研究为主，也有少数公司已经开始从事基于WPF的产品研发工作。</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前WPF的正式版本已经发布（随.net framework 3.0正式版发布），你可以从msdn上免费下载</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相应的技术支持已经开始，但目前仅限于大客户，主要做售前技术支持，对于普通开发人员的技术支持可能要等到明年2月份才会开始（个人知道的情况，请以微软官方技术支持网站发布的信息为准）</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WPF的VS2005插件目前还只有社区预览版（CTP版），也是从msdn上免费下载的，但正式版恐怕还要等一段时间，但使用CTP版本确实已经可以在VS2005中进行所见即所得的WPF开发。</p>
<p><strong>目前已经上市或即将上市的WPF书</strong></p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation </p>
<p><a href="http://www.amazon.com/Applications-Code-Markup-Presentation-Foundation/dp/0735619573/sr=8-1/qid=1164814449/ref=pd_bbs_1/104-6804148-3392750?ie=UTF8&amp;s=books"><font color=#1d58d1>http://www.amazon.com/Applications-Code-Markup-Presentation-Foundation/dp/0735619573/sr=8-1/qid=1164814449/ref=pd_bbs_1/104-6804148-3392750?ie=UTF8&amp;s=books</font></a></p>
<p>在WPF官方网站（<a href="http://wpf.netfx3.com/"><font color=#1d58d1>http://wpf.netfx3.com</font></a>）上推荐的书，不过我没看过。</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Programming Windows Presentation Foundation</p>
<p><a href="http://www.amazon.com/Programming-Windows-Presentation-Foundation-Chris/dp/0596101139/sr=8-2/qid=1164814449/ref=pd_bbs_2/104-6804148-3392750?ie=UTF8&amp;s=books"><font color=#1d58d1>http://www.amazon.com/Programming-Windows-Presentation-Foundation-Chris/dp/0596101139/sr=8-2/qid=1164814449/ref=pd_bbs_2/104-6804148-3392750?ie=UTF8&amp;s=books</font></a></p>
<p>这本书已经出了一段时间，是基于WPF的CTP版本写的，所以其中的sample可能在正式版无法运行，但总体而言还是本不错的参考书。据可靠消息，作者已经针对WPF正式版做了修改，并在不久将出一本新书，但目前还不清楚新书的具体内容有多大的改变，估计是修改+扩展。</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows Presentation Foundation Unleashed (WPF) (Unleashed)</p>
<p><a href="http://www.amazon.com/Windows-Presentation-Foundation-Unleashed-WPF/dp/0672328917/sr=8-5/qid=1164814449/ref=pd_bbs_sr_5/104-6804148-3392750?ie=UTF8&amp;s=books"><font color=#1d58d1>http://www.amazon.com/Windows-Presentation-Foundation-Unleashed-WPF/dp/0672328917/sr=8-5/qid=1164814449/ref=pd_bbs_sr_5/104-6804148-3392750?ie=UTF8&amp;s=books</font></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Adam Nathan出的书，Adam是WPF Team的成员，绝对的WPF专家，这本书绝对值得期待！</p>
<p><strong>&nbsp;WPF博客列表<br></strong>大家直接查看<a href="http://blogs.msdn.com/tims/articles/475132.aspx"><strong><font color=#1d58d1>http://blogs.msdn.com/tims/articles/475132.aspx</font></strong></a>，我就不转载了。&nbsp;</p>
<img src ="http://www.cppblog.com/twzheng/aggbug/37593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2007-12-01 00:36 <a href="http://www.cppblog.com/twzheng/articles/37593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#制作WinForm控件 </title><link>http://www.cppblog.com/twzheng/articles/37361.html</link><dc:creator>谭文政</dc:creator><author>谭文政</author><pubDate>Mon, 26 Nov 2007 18:31:00 GMT</pubDate><guid>http://www.cppblog.com/twzheng/articles/37361.html</guid><wfw:comment>http://www.cppblog.com/twzheng/comments/37361.html</wfw:comment><comments>http://www.cppblog.com/twzheng/articles/37361.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/twzheng/comments/commentRss/37361.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/twzheng/services/trackbacks/37361.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: C#制作WinForm控件&nbsp;&nbsp; 摘自：http://www.cnblogs.com/salonliudong自定义控件基础知识一 、概述Windows 窗体控件是可再次使用的组件，它们封装了用户界面功能，并且可以用于客户端 Windows 应用程序。&#8220;Windows 窗体&#8221;不仅提供了许多现成控件，还提供了自行开发控件的基础结构。可以组合现有控...&nbsp;&nbsp;<a href='http://www.cppblog.com/twzheng/articles/37361.html'>阅读全文</a><img src ="http://www.cppblog.com/twzheng/aggbug/37361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/twzheng/" target="_blank">谭文政</a> 2007-11-27 02:31 <a href="http://www.cppblog.com/twzheng/articles/37361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>