﻿<?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>博客园-sunrack</title><link>http://www.cnblogs.com/sunrack/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Oct 2008 18:22:22 GMT</lastBuildDate><pubDate>Sun, 12 Oct 2008 18:22:22 GMT</pubDate><ttl>60</ttl><item><title>正则表达式全部符号解释</title><link>http://www.cnblogs.com/sunrack/articles/1306777.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Thu, 09 Oct 2008 01:13:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1306777.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1306777.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1306777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1306777.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1306777.html</trackback:ping><description><![CDATA[<div class="post">
<div class="postTitle"><a class="postTitle2" id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/yirlin/archive/2006/04/12/373222.html">正则表达式全部符号解释</a> </div>
<table cellspacing="1" cellpadding="3" align="center" bgcolor="#eaeaea" border="0">
    <tr bgcolor="#f0f0f0">
            <th style="font-size: 12px" align="left" width="80" bgcolor="#f0f0f0">字符 </th>
            <th style="font-size: 12px" align="left">描述</th>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\ </td>
            <td style="font-size: 12px">将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如，'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">^ </td>
            <td style="font-size: 12px">匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">$ </td>
            <td style="font-size: 12px">匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">* </td>
            <td style="font-size: 12px">匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">+ </td>
            <td style="font-size: 12px">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">? </td>
            <td style="font-size: 12px">匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">{n} </td>
            <td style="font-size: 12px">n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">{n,} </td>
            <td style="font-size: 12px">n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">{n,m} </td>
            <td style="font-size: 12px">m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">? </td>
            <td style="font-size: 12px">当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 "oooo"，'o+?' 将匹配单个 "o"，而 'o+' 将匹配所有 'o'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">. </td>
            <td style="font-size: 12px">匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">(pattern) </td>
            <td style="font-size: 12px">匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0&#8230;$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">(?:pattern) </td>
            <td style="font-size: 12px">匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">(?=pattern) </td>
            <td style="font-size: 12px">正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ，但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">(?!pattern) </td>
            <td style="font-size: 12px">负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows"，但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">x|y </td>
            <td style="font-size: 12px">匹配 x 或 y。例如，'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">[xyz] </td>
            <td style="font-size: 12px">字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 "plain" 中的 'a'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">[^xyz] </td>
            <td style="font-size: 12px">负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 "plain" 中的'p'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">[a-z] </td>
            <td style="font-size: 12px">字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">[^a-z] </td>
            <td style="font-size: 12px">负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\b </td>
            <td style="font-size: 12px">匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\B </td>
            <td style="font-size: 12px">匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\cx </td>
            <td style="font-size: 12px">匹配由 x 指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\d </td>
            <td style="font-size: 12px">匹配一个数字字符。等价于 [0-9]。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\D </td>
            <td style="font-size: 12px">匹配一个非数字字符。等价于 [^0-9]。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\f </td>
            <td style="font-size: 12px">匹配一个换页符。等价于 \x0c 和 \cL。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\n </td>
            <td style="font-size: 12px">匹配一个换行符。等价于 \x0a 和 \cJ。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\r </td>
            <td style="font-size: 12px">匹配一个回车符。等价于 \x0d 和 \cM。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\s </td>
            <td style="font-size: 12px">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\S </td>
            <td style="font-size: 12px">匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\t </td>
            <td style="font-size: 12px">匹配一个制表符。等价于 \x09 和 \cI。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\v </td>
            <td style="font-size: 12px">匹配一个垂直制表符。等价于 \x0b 和 \cK。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\w </td>
            <td style="font-size: 12px">匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\W </td>
            <td style="font-size: 12px">匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\xn </td>
            <td style="font-size: 12px">匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' &amp; "1"。正则表达式中可以使用 ASCII 编码。.</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\num </td>
            <td style="font-size: 12px">匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\n </td>
            <td style="font-size: 12px">标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为向后引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\nm </td>
            <td style="font-size: 12px">标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式，则 nm 为向后引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\nml </td>
            <td style="font-size: 12px">如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。</td>
        </tr>
        <tr bgcolor="#fafafa">
            <td style="font-size: 12px">\un </td>
            <td style="font-size: 12px">匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。</td>
        </tr>
    </table>
<div class="postDesc">&nbsp;</div>
</div>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1306777.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42952/" target="_blank">[新闻]微型博客Twitter取消IM服务 称其ROI差</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>动态修改SiteMapPath - 代码生成所有节点 实例</title><link>http://www.cnblogs.com/sunrack/articles/1306776.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Thu, 09 Oct 2008 01:08:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1306776.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1306776.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1306776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1306776.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1306776.html</trackback:ping><description><![CDATA[<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Load(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMap.SiteMapResolve&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapResolveEventHandler(SiteMap_SiteMapResolve);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.LoadData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;SiteMapNode&nbsp;SiteMap_SiteMapResolve(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;SiteMapResolveEventArgs&nbsp;e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SiteMap.CurrentNode.Clone(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Category&nbsp;curCategory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Category)e.Context.Session[</span><span style="color: #800000">"</span><span style="color: #800000">Category</span><span style="color: #800000">"</span><span style="color: #000000">];<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Article&nbsp;curArticle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Article)e.Context.Session[</span><span style="color: #800000">"</span><span style="color: #800000">Article</span><span style="color: #800000">"</span><span style="color: #000000">];<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NavigatorState&nbsp;curNavigatorState&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NavigatorState.First;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;curPageName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.Context.Request.AppRelativeCurrentExecutionFilePath.Substring(</span><span style="color: #800080">2</span><span style="color: #000000">).ToUpper();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(curPageName)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">INDEX.ASPX</span><span style="color: #800000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curNavigatorState&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NavigatorState.First;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">CATEGORYLIST.ASPX</span><span style="color: #800000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curNavigatorState&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NavigatorState.Category;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateNodes(currentNode,&nbsp;curCategory);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">ARTICLEVIEW.ASPX</span><span style="color: #800000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curNavigatorState&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NavigatorState.Article;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateNodes(currentNode,&nbsp;curCategory);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateChildNode(currentNode,&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curArticle.ArticleID.ToString(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">ArticleView.aspx?ArticleID=</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;curArticle.ArticleID,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">全文</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&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">default</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curNavigatorState&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NavigatorState.First;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;currentNode;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;SiteMapNode&nbsp;CreateNodes(SiteMapNode&nbsp;currentNode,&nbsp;&nbsp;Category&nbsp;curCategory)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(curCategory&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">Category</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;curCategoryTree&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CategoryData.GetCategoryTree(curCategory.CategoryID);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;curRootNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SiteMap.CurrentNode.Clone(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreach</span><span style="color: #000000">&nbsp;(Category&nbsp;category&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;curCategoryTree)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curRootNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateChildNode(curRootNode,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;category.CategoryID.ToString(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">CategoryList.aspx?CategoryID=</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;category.CategoryID,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;category.CategoryName);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;curRootNode;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;currentNode;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;SiteMapNode&nbsp;CreateChildNode(SiteMapNode&nbsp;rootNode,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;key,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;url,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;title)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNodeCollection&nbsp;childNodes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapNodeCollection();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;newNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapNode(SiteMap.Provider,&nbsp;key,&nbsp;url,&nbsp;title);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newNode.ParentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rootNode;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;childNodes.Add(newNode);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootNode.ChildNodes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;childNodes;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;newNode;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
 <img src ="http://www.cnblogs.com/sunrack/aggbug/1306776.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42952/" target="_blank">[新闻]微型博客Twitter取消IM服务 称其ROI差</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>动态修改SiteMapPath</title><link>http://www.cnblogs.com/sunrack/articles/1306775.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Thu, 09 Oct 2008 01:06:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1306775.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1306775.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1306775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1306775.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1306775.html</trackback:ping><description><![CDATA[<p>转</p>
<p>今天又发现了一些新问题，其中就有一个关于动态修改&nbsp;SiteMapPath的问题。找了N个网页，也试了N种方法，不过其实也就那么几个来回重复。终于在一个帖子中找到了解决的方法，贴出来以备将来使用。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于原文是帖子问答的形式，本文整理为说明形式(原文的繁体未作修改)。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原文地址：<a href="http://www.purecs.net/thread/topic376_1.aspx">http://www.purecs.net/thread/topic376_1.aspx</a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.purecs.net/thread/topic479_1.aspx">http://www.purecs.net/thread/topic479_1.aspx</a></p>
<p><span id="ctl00_SiteMapPath1" minmax_bound="true"></span></p>
<p><span minmax_bound="true"><span minmax_bound="true">实例:</span></span></p>
<p><span minmax_bound="true"><span minmax_bound="true">pure C# 技術社群</span><span minmax_bound="true"> &#187; </span><span minmax_bound="true">ASP.NET</span><span minmax_bound="true"> &#187; </span><span minmax_bound="true">動態修改SiteMapPath路徑</span></span>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在網頁上放置一個SiteMapPath可以提供使用者一個清楚的瀏覽路標指示，如果你的SiteMap是靜態不會變動的倒是很簡單，只要編寫好一個XML檔放上去，其它的事就可以不用管了，但是在動態網頁中SiteMap的路徑可能會隨著不同的情況而有所更動，這時預先建立的靜態SiteMap似乎就不怎麼好用了，因為你無法事先去預測SiteMap該有哪些路徑(就像現在這個論壇上面的SiteMap)，這個時後你必需要用程式動態控制SiteMapPath中Node的連結路徑及顯示的文字，現在只要跟著下面的步驟做就可以簡單的做到這個功能。<br minmax_bound="true" />
<br minmax_bound="true" />
1. 先在Web Form中建立一個ModifyPath方法</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;SiteMapNode&nbsp;ModifyPath(Object&nbsp;sender,&nbsp;SiteMapResolveEventArgs&nbsp;e)&nbsp;&nbsp;</span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;2. 在Page_Load 中註冊SiteMapResolve事件給ModifyPath方法</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /><span style="color: #000000">SiteMap.SiteMapResolve&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapResolveEventHandler(</span><span style="color: #0000ff">this</span><span style="color: #000000">.ModifyPath);&nbsp;</span></div>
</div>
<p>&nbsp;</p>
<p>3. 最後在ModifyPath中撰寫動態路徑及所顯示的文字程式碼即可</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;SiteMapNode&nbsp;ModifyPath(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;SiteMapResolveEventArgs&nbsp;e)&nbsp;&nbsp;&nbsp;<br />
<img id="_77_476_Open_Image" onclick="this.style.display='none'; document.getElementById('_77_476_Open_Text').style.display='none'; document.getElementById('_77_476_Closed_Image').style.display='inline'; document.getElementById('_77_476_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204444.gif" align="top"><img id="_77_476_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_77_476_Closed_Text').style.display='none'; document.getElementById('_77_476_Open_Image').style.display='inline'; document.getElementById('_77_476_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204796.gif" align="top"></span><span id="_77_476_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">...</span><span id="_77_476_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SiteMap.CurrentNode.Clone(</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;modifyNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;currentNode;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;modifyNode.Url&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://www.bbb.net</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;modifyNode.Title&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">bbb</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;(modifyNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;modifyNode.ParentNode)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
<img id="_341_440_Open_Image" onclick="this.style.display='none'; document.getElementById('_341_440_Open_Text').style.display='none'; document.getElementById('_341_440_Closed_Image').style.display='inline'; document.getElementById('_341_440_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204909.gif" align="top"><img id="_341_440_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_341_440_Closed_Text').style.display='none'; document.getElementById('_341_440_Open_Image').style.display='inline'; document.getElementById('_341_440_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204651.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_341_440_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">...</span><span id="_341_440_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modifyNode.Url&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://www.aaa.net</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modifyNode.Title&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">aaa</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204202.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;currentNode;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204581.gif" align="top" />&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /></span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了，你現在應該可以看到一點點成果，至少SiteMapPath中的結點能被程式控制了，剩下的只需要寫出ModifyPath中真正的取得路徑的程式碼，動態修改SiteMapPath就是這麼簡單。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SiteMapNode有一個ChildNodes集合屬性，包含Add、Insert、Remove、Clear等方法可以用來新增或是刪除結點，所以不管是多少層都可以在SiteMapResolve事件中依邏輯增加或減少層級，例如你在這個網站上回文時原本的結點應該是<br minmax_bound="true" />
<br minmax_bound="true" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pure C# 技術社群 &gt;&gt; ASP.NET &gt;&gt; 動態修改SiteMpaPath路徑 &gt;&gt; 回覆文章<br minmax_bound="true" />
<br minmax_bound="true" />
但是在程式中已經把 "回覆文章" 這個節點刪除掉了<br minmax_bound="true" />
程序如下:</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">currentNode&nbsp;為"回覆文章"&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /></span><span style="color: #000000">&nbsp;SiteMapNode&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SiteMap.CurrentNode.Clone(</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" />&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(currentNode.Key.EndsWith(</span><span style="color: #000000">"</span><span style="color: #000000">PostEditor.aspx</span><span style="color: #000000">"</span><span style="color: #000000">.ToLower()))&nbsp;&nbsp;&nbsp;<br />
<img id="_157_302_Open_Image" onclick="this.style.display='none'; document.getElementById('_157_302_Open_Text').style.display='none'; document.getElementById('_157_302_Closed_Image').style.display='inline'; document.getElementById('_157_302_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204444.gif" align="top"><img id="_157_302_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_157_302_Closed_Text').style.display='none'; document.getElementById('_157_302_Open_Image').style.display='inline'; document.getElementById('_157_302_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204796.gif" align="top">&nbsp;</span><span id="_157_302_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">...</span><span id="_157_302_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">currentNode&nbsp;為"回覆文章"的上一層&nbsp;"動態修改SiteMpaPath路徑"&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;currentNode.ParentNode;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode.ChildNodes.Clear();&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204581.gif" align="top" />}</span></span><span style="color: #000000">&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /></span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;现在变成:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pure C# 技術社群 &gt;&gt; ASP.NET &gt;&gt; 動態修改SiteMpaPath路徑</p>
<p>ps:我对上面的路径理解不一定很对,也没有进行测试,如果有错会更新</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 再如，在当前节点的显示中，加入新的节点可以如下操作(为避免歧义,贴出该功能的程序而与前面无关,当然,原文也是这么写滴,可以偷懒&nbsp;: D )</p>
<p>效果:</p>
<p><span minmax_bound="true"><span minmax_bound="true">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pure C# 技術社群</span><span minmax_bound="true"> &#187; </span><span minmax_bound="true">ASP.NET</span><span minmax_bound="true"> &#187; </span><span minmax_bound="true">動態修改SiteMapPath路徑&#187; 新的節點</span></span></p>
<p><span minmax_bound="true"><span minmax_bound="true">程序如下:</span></span></p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204192.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">partial</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SiteMapPathDemo&nbsp;:&nbsp;System.Web.UI.Page&nbsp;&nbsp;&nbsp;<br />
<img id="_62_952_Open_Image" onclick="this.style.display='none'; document.getElementById('_62_952_Open_Text').style.display='none'; document.getElementById('_62_952_Closed_Image').style.display='inline'; document.getElementById('_62_952_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204444.gif" align="top"><img id="_62_952_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_62_952_Closed_Text').style.display='none'; document.getElementById('_62_952_Open_Image').style.display='inline'; document.getElementById('_62_952_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204796.gif" align="top">&nbsp;</span><span id="_62_952_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">...</span><span id="_62_952_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Load(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)&nbsp;&nbsp;&nbsp;<br />
<img id="_133_235_Open_Image" onclick="this.style.display='none'; document.getElementById('_133_235_Open_Text').style.display='none'; document.getElementById('_133_235_Closed_Image').style.display='inline'; document.getElementById('_133_235_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204909.gif" align="top"><img id="_133_235_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_133_235_Closed_Text').style.display='none'; document.getElementById('_133_235_Open_Image').style.display='inline'; document.getElementById('_133_235_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204651.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_133_235_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">...</span><span id="_133_235_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMap.SiteMapResolve&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapResolveEventHandler(SiteMap_SiteMapResolve);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204202.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;SiteMapNode&nbsp;SiteMap_SiteMapResolve(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;SiteMapResolveEventArgs&nbsp;e)&nbsp;&nbsp;&nbsp;<br />
<img id="_340_947_Open_Image" onclick="this.style.display='none'; document.getElementById('_340_947_Open_Text').style.display='none'; document.getElementById('_340_947_Closed_Image').style.display='inline'; document.getElementById('_340_947_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204909.gif" align="top"><img id="_340_947_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_340_947_Closed_Text').style.display='none'; document.getElementById('_340_947_Open_Image').style.display='inline'; document.getElementById('_340_947_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204651.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_340_947_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">...</span><span id="_340_947_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(SiteMap.CurrentNode&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
<img id="_447_901_Open_Image" onclick="this.style.display='none'; document.getElementById('_447_901_Open_Text').style.display='none'; document.getElementById('_447_901_Closed_Image').style.display='inline'; document.getElementById('_447_901_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204909.gif" align="top"><img id="_447_901_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_447_901_Closed_Text').style.display='none'; document.getElementById('_447_901_Open_Image').style.display='inline'; document.getElementById('_447_901_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204651.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_447_901_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">...</span><span id="_447_901_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SiteMap.CurrentNode.Clone(</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNodeCollection&nbsp;childNodes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapNodeCollection();&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteMapNode&nbsp;newNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteMapNode(e.Provider,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">newNode</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">OthrePage.aspx</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">新的節點</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newNode.ParentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;currentNode;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;childNodes.Add(newNode);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode.ChildNodes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;childNodes;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;newNode;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204202.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;currentNode;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204202.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.cnblogs.com/sunrack/admin/mhtml:file://C:/Documents%20and%20Settings/maocao/Desktop/动态修改SiteMapPath(整理)-在线阅读-新书城.mht!http://www.newbooks.com.cn/infos/pic/200804/198147/20080408010204219.gif" align="top" /></span></span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br minmax_bound="true" />
</p>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1306775.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42952/" target="_blank">[新闻]微型博客Twitter取消IM服务 称其ROI差</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ASPxMenu 去掉当前页自动选中</title><link>http://www.cnblogs.com/sunrack/articles/1306060.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Wed, 08 Oct 2008 01:51:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1306060.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1306060.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1306060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1306060.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1306060.html</trackback:ping><description><![CDATA[<p>SyncSelectionWithCurrentPath 不起作用</p>
<p>&nbsp;</p>
<p>只好在给 ASPxMenu&nbsp;数据绑定之后添加：</p>
<p>&nbsp;</p>
<p>this.ASPxMenuMain.SelectedItem = null;</p>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1306060.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42951/" target="_blank">[新闻]用手机聊Gtalk的方法以及应用总结</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ASP.NET  超链接 设置 状态栏隐藏显示以及去掉下划线</title><link>http://www.cnblogs.com/sunrack/articles/1306059.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Wed, 08 Oct 2008 01:49:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1306059.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1306059.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1306059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1306059.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1306059.html</trackback:ping><description><![CDATA[&lt;head runat="server"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;asp:ContentPlaceHolder ID="head" runat="server"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/asp:ContentPlaceHolder&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;link href="CSS/Frame.css" rel="stylesheet" type="text/css" /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;style TYPE="text/css"&gt;<br />
&lt;!--<br />
A:link{color:Black;text-decoration:none}<br />
A:visited{color:Black;text-decoration:none}<br />
A:hover {color:Black;text-decoration:none}<br />
&nbsp;--&gt;<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&nbsp; onmouseover="if(event.srcElement.tagName=='A' ||event.srcElement.tagName=='IMG')&nbsp;&nbsp; {window.status='';return&nbsp;&nbsp; true}"&gt;
<img src ="http://www.cnblogs.com/sunrack/aggbug/1306059.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42951/" target="_blank">[新闻]用手机聊Gtalk的方法以及应用总结</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>CSS DIV 列自动高度的方法</title><link>http://www.cnblogs.com/sunrack/articles/1306057.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Wed, 08 Oct 2008 01:47:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1306057.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1306057.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1306057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1306057.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1306057.html</trackback:ping><description><![CDATA[原作者:Alex Robinson<br />
原文标题:Equal Height Columns<br />
这是一个比较典型的三行二列布局，每列高度（事先并不能确定哪列的高度）的相同，是每个设计师追求的目标，按一般的做法，大多采用背景图填充、加JS脚本的方法使列的高度相同，本文要介绍的是采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题。<br />
<br />
代码
<div class="blockcode"><span class="headactions" onclick="copycode($('code3'));">复制内容到剪贴板</span>
<h5>代码:</h5>
<code id="code3">#wrap{<br />
overflow: hidden;<br />
}<br />
<br />
<br />
#sideleft, #sideright{<br />
padding-bottom: 32767px;<br />
margin-bottom: -32767px; <br />
}</code></div>
<strong>实现原理：</strong><br />
块元素必须包含在一个容器里。<br />
应用overflow: hidden 到容器里的元素。<br />
应用 padding-bottom（足够大的值）到列的块元素 。<br />
应用margin-bottom（足够大的值）到列的块元素。 <br />
padding-bottom将列拉长变的一样高，而负的margin-bottom又使其回到底部开始的位置，同时，溢出部分隐藏掉了。<br />
兼容各浏览器<br />
<img src ="http://www.cnblogs.com/sunrack/aggbug/1306057.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42951/" target="_blank">[新闻]用手机聊Gtalk的方法以及应用总结</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>自动高度的TextBox</title><link>http://www.cnblogs.com/sunrack/articles/1301463.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Sun, 28 Sep 2008 06:32:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1301463.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1301463.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1301463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1301463.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1301463.html</trackback:ping><description><![CDATA[<p>真被微软的IE6害死了！</p>
<p>&nbsp;</p>
<p>正确的方法</p>
<p>&nbsp;</p>
<p>overflow 水平及垂直方向内容溢出时的设置 <br />
overflow-x 水平方向内容溢出时的设置 <br />
overflow-y 垂直方向内容溢出时的设置 <br />
<br />
以上三个属性设置的值为visible、scroll、hidden、auto <br />
<br />
visible 默认值。使用该值时，无论设置的"width"和"height"的值是多少，其中的内容无论是否超出范围都将被强制显示。 <br />
hidden 效果与visible相反。任何超出"width"和"height"的内容都会不可见。 <br />
scroll 无论内容是否超越范围，都将显示滚动条。 <br />
auto 当内容超出范围时，显示滚动条，否则不显示。 <br />
<br />
scroll属性对比演示： <br />
代码: <br />
&lt;div style="height:100px;width:100px;overflow-y:scroll;"&gt; <br />
test <br />
&lt;/div&gt; <br />
<br />
&lt;div style="height:100px;width:100px;overflow-y:scroll;"&gt; <br />
test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt; <br />
test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt; <br />
&lt;/div&gt; <br />
<br />
<br />
auto属性对比演示： <br />
代码: <br />
&lt;div style="height:100px;width:100px;overflow-y:auto;"&gt; <br />
test <br />
&lt;/div&gt; <br />
<br />
&lt;div style="height:100px;width:100px;overflow-y:auto;"&gt; <br />
test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt; <br />
test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt;test&lt;br&gt; <br />
&lt;/div&gt; <br />
<br />
<br />
应用： <br />
<br />
没有水平滚动条 <br />
style="overflow-x:hidden" <br />
<br />
没有垂直滚动条 <br />
style="overflow-y:hidden" <br />
<br />
没有滚动条 <br />
style="overflow-x:hidden;overflow-y:hidden" 或 style="overflow:hidden" </p>
<p>&nbsp;</p>
<p>但是IE6总是无法正常显示</p>
<p>大家知道IE有两种渲染模式：Quirks Mode和Strict Mode。Quirks Mode基本上是非标准的，包括盒模型在内，它的渲染方式与W3C的标准有些出入。而Strick Mode基本上是标准的（反正都不是绝对标准也不是绝对不标准&#8230;&#8230;）。IE6及以前版本会根据写在XHTML文档第一行（也只能是第一行）的DocType声明来选择渲染模式。如果发现了一个它能识别的DocType，比如XHTML Transitional或者XHTML Strict等等，它就使用Strict Mode来渲染。其他所有情况下都使用Quirks Mode。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有些开发者为了显式地声明他们的XHTML文档是一个XML，会在文档的第一行（问题就在这里，它也必须在第一行）加上XML的序言（prolog）。比如：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0" encoding="gb2312"?&gt;</p>
<p>&nbsp;&nbsp;&nbsp; 　虽然初衷是为了让文档更&#8220;标准&#8221;，但由于IE不认这行字，结果还是按Quirks Mode来渲染。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IE7 解决这个问题，它会跳过prolog来看检查DocType。所以可能会出现IE6及以下版本用Quirks Mode渲染而IE7 用Strict Mode渲染的情况。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在让IE7渲染textbox的模式是Quirks Mode，这样textbox的overflow:visible属性就可以像IE6效果一样了，所以只要把XHTML文档第一行的DocType声明删除就可以了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样问题就解决了。。。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：虽然在IE7和IE6中显示一样的，但是在FF中还是不一样，所以这种方法只能解决IE7中的问题，FF中的是无能为力的。</p>
<p><br />
&nbsp;详见</p>
<p>&nbsp;<a href="http://www.cnblogs.com/sunrack/articles/1301465.html">http://www.cnblogs.com/sunrack/articles/1301465.html</a></p>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1301463.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42950/" target="_blank">[新闻]Google开拓美政府机构市场 微软业务受冲击</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ASP.NET控件textbox的样式overflow:visible在IE6和IE7不兼容的解决</title><link>http://www.cnblogs.com/sunrack/articles/1301465.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Sun, 28 Sep 2008 06:32:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1301465.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1301465.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1301465.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1301465.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1301465.html</trackback:ping><description><![CDATA[<p>转</p>
<p>现在，最令网页设计者头痛的问题就是网页在各个浏览器中的兼容性。而兼容性差最长见的，也是最令人恐惧的便是&#8220;页面布局混乱&#8221;。常常一个页面在IE6下显示的非常完美，而到了IE7（或者FireFox）中，则惨的&#8220;不堪入目&#8221;。到底是什么让这些页面那么的&#8220;水土不服&#8221;呢？ </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实，这些都是IE6酿下的恶果，IE6对web标准的支持过于不足，甚至理解的有偏差，才导致了这些页面的&#8220;脆弱&#8221;。而IE7则修正了很多的那种&#8220;IE6对css解释和渲染&#8221;的bug。这种bug有很多。今天，这里只讲其中一个，但是确是最重要的一个，很多的&#8220;十分&#8221;混乱的页面都是它造成的。可以不客气地说，它简直就像&#8220;页面布局混乱黑帮&#8221;的幕后黑手，是引起页面布局混乱的祸首之一，而且是最大的一个。 它就是潜伏在网页背后的&#8220;&#8216;overflow:visible&#8217;IE6渲染bug&#8221;。</p>
<div class="haExpanded" style="display: none">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ASP.NET控件textbox的样式overflow:visible时候，在IE6中的显示和在IE7中的差别很大，IE6中的textbox的高度和宽度都可以自适应，根据内容变化，但是在IE7中不是，textbox的高度宽度都是默认值，这就造成了textbox在IE6和IE7的显示混乱。</p>
</div>
<p><strong>原因——IE6对&#8220;overflow:visible&#8221;的误解</strong> </p>
<blockquote><strong>Visible</strong>： "This value indicates that content is not clipped, i.e.,it may be rendered outside the block box（注：后面这句可能是后续版本补充上来的）". </blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意，w3c只是说，超出容器的内部不会被剪切。但是它并没有说，超出来的内容可以&#8220;撑开&#8221;容器。所以下面这个例子中IE7的解释和渲染是正确的，而IE6则是错误的（因为它错误的认为，只有让容器内的内容&#8220;撑开&#8221;容器，才能让容器内的内容在超出时不被剪切），IE7和FireFox是一样的。</p>
<p><strong>解决方法</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大家知道IE有两种渲染模式：Quirks Mode和Strict Mode。Quirks Mode基本上是非标准的，包括盒模型在内，它的渲染方式与W3C的标准有些出入。而Strick Mode基本上是标准的（反正都不是绝对标准也不是绝对不标准&#8230;&#8230;）。IE6及以前版本会根据写在XHTML文档第一行（也只能是第一行）的DocType声明来选择渲染模式。如果发现了一个它能识别的DocType，比如XHTML Transitional或者XHTML Strict等等，它就使用Strict Mode来渲染。其他所有情况下都使用Quirks Mode。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有些开发者为了显式地声明他们的XHTML文档是一个XML，会在文档的第一行（问题就在这里，它也必须在第一行）加上XML的序言（prolog）。比如：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0" encoding="gb2312"?&gt;</p>
<p>&nbsp;&nbsp;&nbsp; 　虽然初衷是为了让文档更&#8220;标准&#8221;，但由于IE不认这行字，结果还是按Quirks Mode来渲染。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IE7 解决这个问题，它会跳过prolog来看检查DocType。所以可能会出现IE6及以下版本用Quirks Mode渲染而IE7 用Strict Mode渲染的情况。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在让IE7渲染textbox的模式是Quirks Mode，这样textbox的overflow:visible属性就可以像IE6效果一样了，所以只要把XHTML文档第一行的DocType声明删除就可以了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样问题就解决了。。。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：虽然在IE7和IE6中显示一样的，但是在FF中还是不一样，所以这种方法只能解决IE7中的问题，FF中的是无能为力的。</p>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1301465.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42950/" target="_blank">[新闻]Google开拓美政府机构市场 微软业务受冲击</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Div + CSS高度自适应解决方法</title><link>http://www.cnblogs.com/sunrack/articles/1298741.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Thu, 25 Sep 2008 06:19:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1298741.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1298741.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1298741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1298741.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1298741.html</trackback:ping><description><![CDATA[<p>转</p>
<p>这几天用div+css写网站，样子 上中下，中间是个左中右3列，可这3列不是等高偏巧有不同颜色的背景，结果就是ie、firefox...这些浏览器无一例外的现实的效果都是长短不齐，如何让这3列可以自适应高度？</p>
<p>调试了半天，搜索了一番，终于找到解决办法了，采用 Div + CSS 进行三列或二列布局时，事先不知道具体高度，只能根据内容的增减自适应高度，要使两列（或三列）的高度相同，用 Table 很容易实现，但采用 Div + CSS 就显得比较麻烦了。按照一般的做法，大都采用背景图填充或 JS 脚本的方法使高度相同，但这些都不是最好的办法，我认为&#8230; </p>
<p>下面介绍采用&#8220;隐藏容器溢出&#8221;和&#8220;正内补丁&#8221;和&#8220;负外补丁&#8221;结合的方法 </p>
<p>主要代码：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#wrap{overflow:hidden;}&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">外容器</span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
#sidebar_left,#sidebar_right{padding</span><span style="color: #000000">-</span><span style="color: #000000">bottom:100000px;margin</span><span style="color: #000000">-</span><span style="color: #000000">bottom:</span><span style="color: #000000">-</span><span style="color: #000000">100000px;}&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">列</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span></div>
<p>&nbsp;</p>
<p>完整例子代码 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&lt;</span><span style="color: #000000">style&nbsp;type</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">text/css</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
#wrap{overflow:hidden;}&nbsp;&nbsp;&nbsp;<br />
#sidebar_left,#sidebar_right{padding</span><span style="color: #000000">-</span><span style="color: #000000">bottom:100000px;margin</span><span style="color: #000000">-</span><span style="color: #000000">bottom:</span><span style="color: #000000">-</span><span style="color: #000000">100000px;}&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">style</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">wrap</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">width:300px;&nbsp;background:#FFFF00;</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">sidebar_left</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">float:left;width:100px;&nbsp;background:#FF0000;</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">Left</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">sidebar_mid</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">float:left;width:100px;&nbsp;background:#666;</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
Middle</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">sidebar_right</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">float:right;width:100px;&nbsp;background:#0000FF;</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">Right</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1298741.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42949/" target="_blank">[新闻]消息称苹果正在开发iTunes网络电视</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C# 二进制，十进制，十六进制 互转</title><link>http://www.cnblogs.com/sunrack/articles/1291535.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Tue, 16 Sep 2008 03:29:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1291535.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1291535.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1291535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1291535.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1291535.html</trackback:ping><description><![CDATA[<p>//十进制转二进制<br />
Console.WriteLine(Convert.ToString(69, 2));<br />
//十进制转八进制<br />
Console.WriteLine(Convert.ToString(69, 8));<br />
//十进制转十六进制<br />
Console.WriteLine(Convert.ToString(69, 16));</p>
<p>//二进制转十进制<br />
Console.WriteLine(Convert.ToInt32(&#8221;100111101&#8243;, 2));<br />
//八进制转十进制<br />
Console.WriteLine(Convert.ToInt32(&#8221;76&#8243;, 8));<br />
//十六进制转十进制<br />
Console.WriteLine(Convert.ToInt32(&#8221;FF&#8221;, 16));&nbsp;&nbsp;</p>
<img src ="http://www.cnblogs.com/sunrack/aggbug/1291535.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42948/" target="_blank">[新闻]微软周一开电话会议 预计将发布Silverlight2.0</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Windows 窗体的.Net 框架绘图技术</title><link>http://www.cnblogs.com/sunrack/articles/1282060.html</link><dc:creator>sunrack</dc:creator><author>sunrack</author><pubDate>Tue, 02 Sep 2008 07:05:00 GMT</pubDate><guid>http://www.cnblogs.com/sunrack/articles/1282060.html</guid><wfw:comment>http://www.cnblogs.com/sunrack/comments/1282060.html</wfw:comment><comments>http://www.cnblogs.com/sunrack/articles/1282060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sunrack/comments/commentRss/1282060.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sunrack/services/trackbacks/1282060.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="text-indent: 21.75pt"><span style="font-family: 宋体">本文主要介绍</span> <span lang="EN-US">.Net </span><span style="font-family: 宋体">框架的基本绘图技术。通过简要的介绍和示例程序来探讨绘图技术的优势、劣势以及其它相关注意事项。</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><strong><span style="font-family: 宋体">简介</span><span lang="EN-US"><O:P></O:P></span></strong></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span style="font-family: 宋体">幸运的是当编写一个典型的</span><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体程序时，窗体和控件的绘制、效果等操作是不需要特别加以考虑的。这是为什么呢？因为通过使用</span><span lang="EN-US"> .Net </span><span style="font-family: 宋体">框架，开发人员可以拖动一系列的控件到窗体上，并书写一些简单的与事件相关联的代码然后在</span><span lang="EN-US">IDE</span><span style="font-family: 宋体">中按</span><span lang="EN-US">F5</span><span style="font-family: 宋体">，一个完完全全的窗体程序就诞生了！所有控件都将自己绘制自己，窗体或者控件的大小和缩放都调整自如。在这里经常会用到的，且需要引起一点注意的就是控件效果。游戏，自定义图表控件以及屏幕保护程序的编写会需要程序员额外撰写用于响应</span><span lang="EN-US"> Paint </span><span style="font-family: 宋体">事件的代码。</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span style="font-family: 宋体">本文针对那些</span><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体开发人员并有助于他们在应用程序编制过程中使用简单的绘图技术。首先，我们会讨论一些基本的绘图概念。到底谁在负责进行绘制操作？</span><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体程序是如何知道何时该进行绘制的？那些绘制代码究竟被放置在哪里？之后，还将介绍图像绘制的双重缓冲区技术，你将会看到它是怎样工作的，怎样通过一个方法来实现缓存和实际显示的图像间的交替。最后，我们将会探讨</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">智能无效区域</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">，实际就是仅仅重绘或者清除应用程序窗体上的无效部分，加快程序的显示和响应速度。希望这些概念和技术能够引导读者阅读完本文，并且有助于更快和更有效的开发</span><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体程序。</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体使用</span><span lang="EN-US">GDI+</span><span style="font-family: 宋体">图像引擎，在本文中的所有绘图代码都会涉及使用托管的</span><span lang="EN-US">.Net </span><span style="font-family: 宋体">框架来操纵和使用</span><span lang="EN-US">Windows GDI+</span><span style="font-family: 宋体">图像引擎。</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span style="font-family: 宋体">尽管本文用于基本的窗体绘图操作，但是它同样提供了快速的、有效的且有助于提高程序性能的技术和方法。所以，在通读本文之前建议读者对</span><span lang="EN-US">.Net</span><span style="font-family: 宋体">框架有个基本的了解，包括</span><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体事件处理、简单的</span><span lang="EN-US">GDI+</span><span style="font-family: 宋体">对象譬如</span><span lang="EN-US">Line</span><span style="font-family: 宋体">，</span><span lang="EN-US">Pen</span><span style="font-family: 宋体">和</span><span lang="EN-US">Brush</span><span style="font-family: 宋体">等。熟悉</span><span lang="EN-US">Visual Basic .Net</span><span style="font-family: 宋体">或者</span><span lang="EN-US">C#</span><span style="font-family: 宋体">编程语言。</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><strong><span style="font-family: 宋体">概念</span><span lang="EN-US"><O:P></O:P></span></strong></p>
<p class="MsoNormal" style="text-indent: 21pt; text-align: left" align="left"><span lang="EN-US">Windows </span><span style="font-family: 宋体">应用程序是自己负责绘制的，当一个窗体</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">不干净</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">了，也就是说窗体改变了大小，或者部分被其它程序窗体遮盖，或者从最小化状态恢复时，程序都会收到需要绘制的信息。</span><span lang="EN-US">Windows</span><span style="font-family: 宋体">把这种</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">不干净</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">状态称为</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体">无效的</span><span lang="EN-US">(Invalidated)&#8221;</span><span style="font-family: 宋体">状态，我们理解为：需要重绘，当</span><span lang="EN-US">Windows </span><span style="font-family: 宋体">窗体程序需要重绘窗体时它会从</span><span lang="EN-US">Windows</span><span style="font-family: 宋体">消息队列中获取绘制的信息。这个信息经过</span><span lang="EN-US">.Net</span><span style="font-family: 宋体">框架封装然后传递到</span><span style="font-family: 宋体">窗体的 </span><span lang="EN-US" style="font-family: 宋体">PaintBackground </span><span style="font-family: 宋体">和 <span lang="EN-US">Paint </span>事件中去，在上述事件中适当的书写专门用于绘制的代码即可。<span lang="EN-US"><O:P></O:P></span></span></p>
<span style="font-size: 10.5pt; font-family: 宋体">简单的绘图示例如下：<br />
</span>
<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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System;<br />
</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Drawing;<br />
</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Windows.Forms;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;BasicX&nbsp;:&nbsp;Form <br />
{<br />
</span><span style="color: #0000ff">&nbsp; public</span><span style="color: #000000">&nbsp;BasicX() <br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; InitializeComponent();<br />
&nbsp; }<br />
<br />
</span><span style="color: #0000ff">&nbsp; private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;BasicX_Paint(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;PaintEventArgs&nbsp;e) <br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; Graphics&nbsp;g&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.Graphics;<br />
&nbsp;&nbsp;&nbsp; Pen&nbsp;p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Pen(Color.Red);<br />
</span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; int</span><span style="color: #000000">&nbsp;width&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ClientRectangle.Width;<br />
</span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; int</span><span style="color: #000000">&nbsp;height</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ClientRectangle.Height;<br />
&nbsp;&nbsp;&nbsp; g.DrawLine(p,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;width,&nbsp;height);<br />
&nbsp;&nbsp;&nbsp; g.DrawLine(p,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;height,&nbsp;width,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp; p.Dispose();<br />
&nbsp; }<br />
<br />
</span><span style="color: #0000ff">&nbsp; private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;InitializeComponent() <br />
&nbsp; {<br />
</span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; this</span><span style="color: #000000">.SetStyle(ControlStyles.ResizeRedraw,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; this</span><span style="color: #000000">.ClientSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;System.Drawing.Size(</span><span style="color: #000000">300</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">300</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; this</span><span style="color: #000000">.Text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">BasicX</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; this</span><span style="color: #000000">.Paint&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PaintEventHandler(</span><span style="color: #0000ff">this</span><span style="color: #000000">.BasicX_Paint);<br />
&nbsp; }<br />
<br />
&nbsp; [System.STAThreadAttribute()]<br />
</span><span style="color: #0000ff">&nbsp; public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Main() <br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; Application.Run(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicX());<br />
&nbsp; }<br />
}</span></div>
<p class="MsoNormal" style="text-indent: 21pt; text-align: left" align="left"><span style="font-family: 宋体">上述代码分成两个基本的步骤来创建示例程序。首先 </span><span lang="EN-US" style="font-family: 宋体">InitializeComponent </span><span style="font-family: 宋体">方法包含一些属性的设置和附加窗体<span lang="EN-US"> Paint </span>事件的处理过程。注意，在方法中控件的样式也同时被设置，设置控件的样式也是自定义<span lang="EN-US">Windows </span>窗体及控件行为的一种有效途径，譬如：控件的<span lang="EN-US">"ResizeRedraw"</span>属性指示当窗体的大小变化发生以后需要对其完全进行重绘，也就是说重绘时总是需要对整个窗体的客户区域进行重绘。窗体的&#8220;客户区域&#8221;是指除了标题栏和边框的所有窗体区域。可以进行一个有趣的试验，取消该控件的属性然后再运行程序，我们可以很明显的看出为什么该属性会被经常的设置，因为窗体调整大小后的无效区域根本不会被重绘。<span lang="EN-US"><O:P></O:P></span></span></p>
<span style="font-size: 10.5pt; font-family: 宋体">好了，我们需要注意一下<span lang="EN-US">BasicX_Paint</span>方法，正如先前所提到的，<span lang="EN-US">Paint </span>事件在程序需要重绘时被激活，程序窗体利用<span lang="EN-US">Paint</span>事件来负责回应需要重绘的系统消息，<span lang="EN-US">BasicX_Paint</span>方法的调用需要一个对象<span lang="EN-US"> sender </span>和一个<span lang="EN-US">PaintEventArgs</span>类型的变量，<span lang="EN-US">PaintEventArgs</span>类的实例或称之为变量<span lang="EN-US"> e </span>封装了两个重要的数据，第一个就是窗体的<span lang="EN-US"> Graphics </span>对象，该对象表示窗体可绘制的表面也称之为画布用于绘制诸如线、文本以及图像等，第二个数据就是<span lang="EN-US">ClipRectangle</span>，该<span lang="EN-US">Rectangle</span>对象表示窗体上无效的的矩形范围，或者说就是窗体需要重绘的区域。记住，当窗体的<span lang="EN-US">ResizeRedDraw</span>设置后，调整大小后该<span lang="EN-US">ClipRectangle</span>的大小实际就等于窗体整个客户区域的大小，或者是被其它程序窗体遮盖的那部分剪切区域。关于部分剪切区域的用处我们会在智能重绘章节作更详细的阐述。</span><br />
<span style="font-size: 10.5pt; font-family: 宋体"><img height="261" alt="" src="http://images.cnblogs.com/cnblogs_com/risen/images/gdiplus1.jpg" width="241" /><br />
</span>
<p class="MsoNormal" style="text-indent: 21pt"><span lang="EN-US">BasicX </span><span style="font-family: 宋体">示例程序的运行界面</span></p>
<p class="MsoNormal" style="text-indent: 21.1pt"><strong><span style="font-family: 宋体">双重缓冲区绘图技术</span><span lang="EN-US"><O:P></O:P></span></strong></p>
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: 宋体">双重缓冲区技术能够使程序的绘图更加快速和平滑，有效减少绘制时的图像闪烁。该技术的基本原理是先将图像绘制到内存中的一块画布上，一旦所有的绘制操作都完成了，再将内存中的画布推到窗体的或者控件的表面将其显示出来。通过这种操作后的程序能使用户感觉其更加快速和美观。<span lang="EN-US"><O:P></O:P></span></span></p>
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: 宋体">下面提供的示例程序能够阐明双重缓冲区的概念和实现方法，这个示例所包含的功能已相当完整，且完全可以在实际应用中使用。在该章节后面还会提及该技术应该配合控件的一些属性设置才能达到更好的效果。<span lang="EN-US"><O:P></O:P></span></span></p>
<span style="font-size: 10.5pt; font-family: 宋体">要想领略双重缓冲区绘图技术所带来的好处就请运行<span lang="EN-US">SpiderWeb</span>示例程序吧。程序启动并运行后对窗口大小进行调整，你会发现使用这种绘图算法的效率不高，并且在调整大小的过程中有大量的闪烁出现。</span><br />
<span style="font-size: 10.5pt; font-family: 宋体"><img height="251" alt="" src="http://images.cnblogs.com/cnblogs_com/risen/images/gdiplus2.jpg" width="233" /></span><span style="font-family: 宋体"><br />
不具备双重缓冲区技术的<span lang="EN-US">SpiderWeb</span>示例程序</span> <br />
<br />
<span style="font-size: 10.5pt; font-family: 宋体">纵观程序的源码你会发现在程序<span lang="EN-US">Paint</span>事件激活后是通过调用<span lang="EN-US">LineDrawRoutine</span>方法来实现线的绘制的。<span lang="EN-US">LineDrawRoutine</span>方法有两个参数，第一个是<span lang="EN-US">Graphics</span>对象是用于绘制线条的地方，第二个是绘图工具<span lang="EN-US">Pen</span>对象用来画线条。代码相当简单，一个循环语句，<span lang="EN-US">LINEFREQ</span>常量等，程序从窗体表面的左下一直划线到其右上。请注意，程序使用浮点数来计算在窗体上的绘制位置，这样做的好处就是当窗体的大小发生变化时位置数据会更加精确。</span><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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;LineDrawRoutine(Graphics&nbsp;g,&nbsp;Pen&nbsp;p) <br />
{<br />
</span><span style="color: #0000ff">&nbsp; float</span><span style="color: #000000">&nbsp;width&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ClientRectangle.Width;<br />
</span><span style="color: #0000ff">&nbsp; float</span><span style="color: #000000">&nbsp;height&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ClientRectangle.Height;<br />
</span><span style="color: #0000ff">&nbsp; float</span><span style="color: #000000">&nbsp;xDelta&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;width&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;LINEFREQ;<br />
</span><span style="color: #0000ff">&nbsp; float</span><span style="color: #000000">&nbsp;yDelta&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;height&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;LINEFREQ;<br />
</span><span style="color: #0000ff">&nbsp; for</span><span style="color: #000000">&nbsp;(</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">&nbsp;LINEFREQ;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">) <br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; g.DrawLine(p,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;height&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;(yDelta&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;i),&nbsp;xDelta&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;i,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp; }<br />
}</span></div>
<span style="font-size: 10.5pt; font-family: 宋体">撰写很简单的用于响应<span lang="EN-US">Paint</span>事件<span lang="EN-US">SpiderWeb_Paint</span>的代码，正如前面所提到的，<span lang="EN-US">Graphics</span>对象就是从<span lang="EN-US">Paint</span>事件参数<span lang="EN-US">PaintEventArgs</span>对象中提取出来的表示窗体的绘制表面。这个<span lang="EN-US">Graphics</span>对象连同新创建<span lang="EN-US">Pen</span>对象一起传递给<span lang="EN-US">LineDrawRoutine</span>方法来画出蜘蛛网似的线条，使用完<span lang="EN-US">Graphics</span>对象和<span lang="EN-US">Pen</span>对象后释放其占用的资源，那么整个绘制操作就完成了。</span><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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;SpiderWeb_Paint(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;PaintEventArgs&nbsp;e) <br />
{<br />
&nbsp; Graphics&nbsp;g&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.Graphics;<br />
&nbsp; Pen&nbsp;redPen&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Pen(Color.Red);<br />
</span><span style="color: #008000">&nbsp; </span><span style="color: #000000">LineDrawRoutine(g,&nbsp;redPen);<br />
&nbsp; redPen.Dispose();<br />
&nbsp; g.Dispose();<br />
}</span></div>
<p class="MsoNormal" style="text-indent: 21pt; text-align: left" align="left"><span style="font-family: 宋体">那么到底作怎么样的改动才能使上面的<span lang="EN-US">SpiderWeb</span>程序实现简单的</span><span style="font-family: 宋体">双重缓冲区</span><span style="font-family: 宋体">技术呢？原理其实相当简单，就是将应该画到窗体表面的绘制操作改成先画到内存中的位图上，<span lang="EN-US">LineDrawRoutine</span>向这个在内存中隐藏的画布执行同样的蜘蛛网绘制操作，等到绘制完毕再通过调用<span lang="EN-US">Graphics.DrawImage</span>方法将隐藏的画布上内容推到窗体表面来显示出来，最后，再加上一些小的改动一个高性能的绘图窗体程序就完成了。<span lang="EN-US"><O:P></O:P></span></span></p>
<span style="font-size: 10.5pt; font-family: 宋体">请比较下面</span><span style="font-size: 10.5pt; font-family: 宋体">双重缓冲区</span><span style="font-size: 10.5pt; font-family: 宋体">绘图事件与前面介绍的简单绘图事件间的区别：</span><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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;SpiderWeb_DblBuff_Paint(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;PaintEventArgs&nbsp;e) <br />
{<br />
&nbsp; Graphics&nbsp;g&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.Graphics;<br />
&nbsp; Pen&nbsp;bluePen&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Pen(Color.Blue);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp; Bitmap&nbsp;localBitmap&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Bitmap(ClientRectangle.Width,ClientRectangle.Height);<br />
&nbsp; Graphics&nbsp;bitmapGraphics&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Graphics.FromImage(localBitmap);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp; LineDrawRoutine(bitmapGraphics,&nbsp;bluePen);<br />
</span><span style="color: #008000">&nbsp; //</span><span style="color: #008000">把在内存里处理的bitmap推向前台并显示</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp; g.DrawImage(localBitmap,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp; bitmapGraphics.Dispose();<br />
&nbsp; bluePen.Dispose();<br />
&nbsp; localBitmap.Dispose();<br />
&nbsp; g.Dispose();<br />
}</span></div>
<p class="MsoNormal" style="text-indent: 21pt; text-align: left" align="left"><span style="font-family: 宋体">上面的示例代码创建了内存位图对象，它的大小等于窗体的客户区域<span lang="EN-US">(</span>就是绘图表面<span lang="EN-US">)</span>的大小，通过调用<span lang="EN-US">Graphics.FromImage</span>将内存中位图的引用传递给<span lang="EN-US">Graphics</span>对象，也就是说后面所有对该<span lang="EN-US">Graphics</span>对象的操作实际上都是对内存中的位图进行操作的，该操作在<span lang="EN-US">C++</span>中等同于将位图对象的指针复制给<span lang="EN-US">Graphics</span>对象，两个对象使用的是同一块内存地址。现在<span lang="EN-US">Graphics</span>对象表示的是屏幕后方的一块画布，而它在</span><span style="font-family: 宋体">双重缓冲区</span><span style="font-family: 宋体">技术中起到至关重要的作用。所有的线条绘制操作都已经针对于内存中的位图对象，下一步就通过调用<span lang="EN-US">DrawImage</span>方法将该位图复制到窗体，蜘蛛网的线条就会立刻显示在窗体的绘制表面而且丝毫没有闪烁出现。<span lang="EN-US"><O:P></O:P></span></span></p>
<span style="font-size: 10.5pt; font-family: 宋体">这一系列的操作完成后还不是特别有效，因为我们先前提到了，控件的样式也是定义<span lang="EN-US">Windows </span>窗体程序行为的一条途径，为了更好的实现</span><span style="font-size: 10.5pt; font-family: 宋体">双重缓冲区</span><span style="font-size: 10.5pt; font-family: 宋体">必须设置控件的<span lang="EN-US">Opaque</span>属性，这个属性指明窗体是不负责在后台绘制自己的，换句话说，如果这个属性设置了，那么必须为清除和重绘操作添加相关的代码。具备</span><span style="font-size: 10.5pt; font-family: 宋体">双重缓冲区</span><span style="font-size: 10.5pt; font-family: 宋体">版本的<span lang="EN-US">SpiderWeb</span>程序通过以上的设置在每一次需要重绘时都表现良好，窗体表面用其自己的背景色进行清除，这样就更加减少了闪烁的出现。</span><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%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SpiderWeb_DblBuff() <br />
{<br />
&nbsp; SetStyle(ControlStyles.ResizeRedraw&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;ControlStyles.Opaque,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
}<br />
<br />
</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</sp