<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[萍客小居]]></title> 
<link>http://www.piikee.net/index.php</link> 
<description><![CDATA[宠辱不惊,闲看庭前花开花落。去留无意,漫随天边云卷云舒。]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[萍客小居]]></copyright>
<item>
<link>http://www.piikee.net/read.php/405.htm</link>
<title><![CDATA[为DataGridView的一个列加入DateTimePicker控件]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Thu, 05 Aug 2010 15:12:55 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/405.htm</guid> 
<description>
<![CDATA[ 
	由于DataGridView自带的ColumnType里面没有DateTimePicker这个控件。所以要实现一个输入日期的列就比较麻烦了。通过以下方法可以往DataGridView加入DateTimePicker控件。<br/><br/>首先，前端设计加入一个DataGridView控件，命名为DataGridView1。<br/>然后，后台.cs文件写入以下代码：<br/><div class="code"><br/>using System;<br/>using System.Collections.Generic;<br/>using System.ComponentModel;<br/>using System.Data;<br/>using System.Drawing;<br/>using System.Linq;<br/>using System.Text;<br/>using System.Windows.Forms;<br/><br/>namespace moonlight_treasure<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public partial class MyCount : Form<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTimePicker&nbsp;&nbsp;dtp = new DateTimePicker();&nbsp;&nbsp;//这里实例化一个DateTimePicker控件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rectangle _Rectangle;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public MyCount()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataGridView1.Controls.Add(dtp);&nbsp;&nbsp;//把时间控件加入DataGridView<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Visible = false;&nbsp;&nbsp;//先不让它显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Format = DateTimePickerFormat.Custom;&nbsp;&nbsp;//设置日期格式为2010-08-05<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.TextChanged += new EventHandler(dtp_TextChange); //为时间控件加入事件dtp_TextChange<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/>/*************时间控件选择时间时****************/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void dtp_TextChange(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataGridView1.CurrentCell.Value = dtp.Text.ToString();&nbsp;&nbsp;//时间控件选择时间时，就把时间赋给所在的单元格<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>/****************单元格被单击，判断是否是放时间控件的那一列*******************/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (e.ColumnIndex == 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_Rectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); //得到所在单元格位置和大小<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); //把单元格大小赋给时间控件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); //把单元格位置赋给时间控件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Visible = true;&nbsp;&nbsp;//可以显示控件了<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Visible = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/> /***********当列的宽度变化时，时间控件先隐藏起来，不然单元格变大时间控件无法跟着变大哦***********/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Visible = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>/***********滚动条滚动时，单元格位置发生变化，也得隐藏时间控件，不然时间控件位置不动就乱了********/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void dataGridView1_Scroll(object sender, ScrollEventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtp.Visible = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/><br/><br/></div><br/>Tags - <a href="http://www.piikee.net/go.php/tags/datagridview/" rel="tag">datagridview</a> , <a href="http://www.piikee.net/go.php/tags/c%2523/" rel="tag">c#</a> , <a href="http://www.piikee.net/go.php/tags/%25E6%2597%25B6%25E9%2597%25B4%25E6%258E%25A7%25E4%25BB%25B6/" rel="tag">时间控件</a>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/375.htm</link>
<title><![CDATA[C#重写WndProc 方法实现无法关闭的窗体]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Thu, 13 May 2010 13:11:22 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/375.htm</guid> 
<description>
<![CDATA[ 
	在窗体的设计文件Form1.Designer.cs中重写WndProc 方法 ，实现拦截窗体特定消息。代码如下：<br/><div class="code"><br/> protected override void WndProc(ref System.Windows.Forms.Message m)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (m.Msg)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 0x0112:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.WndProc(ref m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;</div>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/373.htm</link>
<title><![CDATA[在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Mon, 10 May 2010 07:10:53 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/373.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;C#窗体的多线程一直是个难题，总是要出现奇奇怪怪的错误。今天开发alexSEO软件时，出现了在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。<br/><br/>主要出现问题代码如下：<br/><div class="code">&nbsp;&nbsp; public&nbsp;&nbsp; void runSEO()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ((urlhead = sr.ReadLine()) != null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<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;num = num + 1;<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;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlhead + url);<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;request.Timeout = int.Parse(tout.Text.ToString()) * 1000;<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;HttpWebResponse response = (HttpWebResponse)request.GetResponse();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(labb.IsHandleCreated)<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;labb.Invoke(labchange); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&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;&#125;<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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(run.IsHandleCreated)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run.Invoke(btnchange);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.myThread.Abort();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;</div><br/><br/>当调试运行中突然关闭软件时，labb.Invoke(labchange);语句就出先了“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”错误。想了一通出现这种情况应该有两种可能。第一种应该是界面还来不及响应Invoke，第二种是界面线程已经结束，所以响应不了。最后解决办法是在labb.Invoke(labchange);前加一个if(labb.IsHandleCreated)判断就可以了。
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/369.htm</link>
<title><![CDATA[.net中使用webpart，数据库报错，error:26的解决办法]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Fri, 09 Apr 2010 04:29:00 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/369.htm</guid> 
<description>
<![CDATA[ 
	<span style="font-size: 14px;"><span style="color: #008000;">出错页面如下：</span></span><br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">“/”应用程序中的服务器错误。<br/>--------------------------------------------------------------------------------<br/><br/>在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) <br/>说明: 执行当前 Web 请求期间，出现未处理的异常。请检查堆栈跟踪信息，以了解有关该错误以及代码中导致错误的出处的详细信息。 <br/><br/>异常详细信息: System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)<br/><br/>源错误: <br/><br/>执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。&nbsp;&nbsp;<br/><br/>堆栈跟踪: <br/><br/><br/>[SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)]<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849015<br/>&nbsp;&nbsp; System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194<br/>&nbsp;&nbsp; System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) +4862333<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +90<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +376<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +4863459<br/>&nbsp;&nbsp; System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31<br/>&nbsp;&nbsp; System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433<br/>&nbsp;&nbsp; System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66<br/>&nbsp;&nbsp; System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499<br/>&nbsp;&nbsp; System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65<br/>&nbsp;&nbsp; System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117<br/>&nbsp;&nbsp; System.Data.SqlClient.SqlConnection.Open() +122<br/>&nbsp;&nbsp; System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87<br/>&nbsp;&nbsp; System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221<br/>&nbsp;&nbsp; System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider.GetConnectionHolder() +19<br/>&nbsp;&nbsp; System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider.LoadPersonalizationBlobs(WebPartManager webPartManager, String path, String userName, Byte[]& sharedDataBlob, Byte[]& userDataBlob) +204<br/>&nbsp;&nbsp; System.Web.UI.WebControls.WebParts.PersonalizationProvider.LoadPersonalizationState(WebPartManager webPartManager, Boolean ignoreCurrentUser) +94<br/>&nbsp;&nbsp; System.Web.UI.WebControls.WebParts.WebPartPersonalization.Load() +103<br/>&nbsp;&nbsp; System.Web.UI.WebControls.WebParts.WebPartPersonalization.LoadInternal() +23<br/>&nbsp;&nbsp; System.Web.UI.WebControls.WebParts.WebPartManager.OnInit(EventArgs e) +293<br/>&nbsp;&nbsp; System.Web.UI.Control.InitRecursive(Control namingContainer) +333<br/>&nbsp;&nbsp; System.Web.UI.Control.InitRecursive(Control namingContainer) +210<br/>&nbsp;&nbsp; System.Web.UI.Control.InitRecursive(Control namingContainer) +210<br/>&nbsp;&nbsp; System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378<br/><br/> <br/><br/><br/>--------------------------------------------------------------------------------<br/>版本信息: Microsoft .NET Framework 版本:2.0.50727.4927; ASP.NET 版本:2.0.50727.4927 </div></div><br/><br/><span style="font-size: 14px;"><span style="color: #008000;">解决办法：</span></span><br/><br/>1，已配置的个性化设置提供程序和数据库。默认情况下启用 Web 部件个性化设置，而且它使用 SQL 个性化设置提供程序 (SqlPersonalizationProvider) 和 Microsoft SQL Server Standard Edition 来存储个性化设置数据。本演练使用 SSE 和默认的 SQL 提供程序。如果安装了 SSE，则不需要进行任何配置。SSE 是作为 Microsoft Visual Studio 2005 安装的可选部分提供的，也可以从 Microsoft.com 免费下载。若要使用 SQL Server 的一个完整版本，必须安装和配置一个 ASP.NET 应用程序服务数据库，并将 SQL 个性化设置提供程序配置为连接到该数据库。有关详细信息，请参见为 SQL Server 创建和配置应用程序服务数据库。还可以创建和配置自定义提供程序来使用其他非 SQL 数据库或存储解决方案。有关详细信息和代码示例，请参见实现成员资格提供程序。<br/><br/>2，预配置的 SQL Server 提供程序<br/>安装 ASP.NET 时，计算机配置文件和服务器的根 Web.config 文件中包括一些配置元素，这些元素为依赖于提供程序的每个 ASP.NET 功能指定 SQL Server 提供程序。默认情况下，这些提供程序被配置为连接到 SQL Server Express 的本地实例。如果您打算只将 SQL Server Express 用于在计算机配置文件的 connectionStrings 节中指定的默认位置，则无需对数据库执行任何手动设置。如果您需要使用在同一服务器上运行的标准版本的 SQL Server 配置数据库，或者您需要配置远程 SQL Server 计算机，则将需要使用此工具。 <br/><br/>注意 <br/>Aspnet_regsql 工具不应与本地安装的、在用户实例模式下（即，连接字符串中包含 User Instance=true）运行的 SQL Server Express一起使用。<br/> <br/><br/>3， 使用 Aspnet_regsql.exe 安装数据库<br/>ASP.NET 包括一个名为 Aspnet_regsql.exe 的工具，该工具用来安装 SQL Server 提供程序所使用的 SQL Server 数据库。Aspnet_regsql.ex 工具位于 Web 服务器上的 drive: &#92;WINDOWS&#92;Microsoft.NET&#92;Framework&#92;versionNumber 文件夹中。Aspnet_regsql.exe 既可用于创建 SQL Server 数据库，又可用于在现有数据库中添加或移除选项。<br/><br/>可以在不使用任何命令行参数的情况下运行 Aspnet_regsql.exe 来运行一个引导您完成如下过程的向导：为运行 SQL Server 的计算机指定连接信息，并为所有受支持的功能安装或移除数据库元素。还可以将 Aspnet_regsql.exe 作为命令行工具来运行，以便为各个功能指定要添加或移除的数据库元素。<br/><br/>若要运行 Aspnet_regsql.exe 向导，请运行 Aspnet_regsql.exe 并不带任何命令行参数，如下面的示例所示：<br/><br/>C:&#92;WINDOWS&#92;Microsoft.NET&#92;Framework&#92;<versionNumber>&#92;aspnet_regsql.exe <br/><br/>还可以将 Aspnet_regsql.exe 工具作为命令行实用工具来运行。例如，下面的命令为运行 SQL Server 的本地计算机上的成员资格和角色管理安装数据库元素：<br/><br/>aspnet_regsql.exe -E -S localhost -A mr <br/><br/>4。在web.config 加入<br/><br/><div class="code">&lt;connectionStrings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;remove name=&quot;LocalSqlServer&quot; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;add name=&quot;LocalSqlServer&quot; connectionString=&quot;Data Source=localhost;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=sa;Password=sa&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;providerName=&quot;System.Data.SqlClient&quot; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/connectionStrings&gt;<br/><br/></div>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/366.htm</link>
<title><![CDATA[zedgraph去掉右键菜单中的选项]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Fri, 12 Mar 2010 12:49:00 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/366.htm</guid> 
<description>
<![CDATA[ 
	 <br/>&nbsp;&nbsp;在zedgraph生成的图表中，右键菜单会出现”恢复默认大小“等菜单项，这些选项可以通过如下方法去掉。<br/><br/>方法一：没有zedgraph源文件的情况：<br/><br/>在zedGraph控件中的ContextMenuBuilder事件中加入如下操作：<br/><br/>private void zGC_ContextMenuBuilder(ZedGraph.ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraph.ZedGraphControl.ContextMenuObjectState objState)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (ToolStripMenuItem item in menuStrip.Items)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((string)item.Tag == "set_default")// “恢复默认大小”菜单项<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menuStrip.Items.Remove(item);//移除菜单项<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.Visible = false; //不显示<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/>去掉其他菜单选项可以把set_default改为对应的字符串。<br/><br/><br/>copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制<br/><br/>page_setup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 页面设置...<br/><br/>print&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打印...<br/><br/>save_as&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另存图表...<br/><br/>set_default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;恢复默认大小<br/><br/>show_val&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示节点数值<br/><br/>undo_all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还原缩放/移动<br/><br/>unzoom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还原缩放<br/><br/><br/>方法二：如果有zedgraph源文件，可以找到ZedGraphControl.ContextMenu.cs，在其中去掉相应的菜单项就可以了。去掉后记得重新编译生成dll文件哦。
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/365.htm</link>
<title><![CDATA[zedgraph]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Sun, 28 Feb 2010 02:09:15 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/365.htm</guid> 
<description>
<![CDATA[ 
	<br/> ZedGraph官方主页：<a href="http://zedgraph.org/wiki/index.php?title=Main_Page" target="_blank">http://zedgraph.org/wiki/index.php?title=Main_Page</a><br/> ZedGraph下载地址：<a href="http://sourceforge.net/projects/zedgraph/files/" target="_blank">http://sourceforge.net/projects/zedgraph/files/</a><br/><br/><br/>图片的保存路径设置：RenderedImagePath属性中设置，程序对该文件夹应该是有写和修改权限的<br/>图片的输出格式：OutputFormat属性中设置，Png的推荐，比较清晰。<br/><br/>Chart<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartBorder&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;ChartFill&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;Legend&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; IsHStack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当有多个显示项的时候设置Y轴数据是叠加的还是分开的<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Xaxis&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;图表区域的X轴相关信息设置<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AxisColor&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; Cross&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; CrossAuto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原点自动设置：True的话Cross的设置就无效了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontSpec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X轴标题字体相关信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Angle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X轴标题字体显示时候的角度，0为水平 90为垂直<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X轴标题字体填充信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ColorOpacity&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;IsScaled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置X轴标题字体显示大小是否根据图的比例放大缩小<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RangeMax&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;RangeMin&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; StringAlignment&nbsp;&nbsp;&nbsp;&nbsp; X轴标题字体排列（不清楚，没试过）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsOmitMag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否显示指数幂（10次方，没试过，似乎与IsUseTenPower有关系）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsPreventLabelOverlap&nbsp;&nbsp; 坐标值显示是否允许重叠，如果False的话，控件会根据坐标值长度自动消除部分坐标值的显示状态<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsShowTitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X轴标题是否显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsTicsBetweenLabels&nbsp;&nbsp;&nbsp;&nbsp; 两个坐标值之间是否自动显示分隔标志<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsUseTenPower&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否使用10次幂指数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsVisible&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否显示X轴<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsZeroLine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当数据为0时候是否显示（在饼状图显示的时候有用）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MajorGrid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大跨度的X轴表格虚线线显示信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DashOff&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; DashOn&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; MajorTic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大跨度的X轴刻度信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsInside&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Chart内部是否显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsOutSide&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Chart外部是否显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsOpposite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在对面的轴上是否显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinorGrid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小跨度的X轴表格虚线显示信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinorTic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小跨度的x轴刻度信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinSpace&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; Scale&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;&nbsp;&nbsp;&nbsp;&nbsp; IsReverse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X轴的刻度值从高到低还是从低到高<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MajorStep&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; MajorStepAuto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否自动设置大刻度步长<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MajorUnit&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; Max&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; MaxAuto&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; Min&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; MinAuto&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; MinGrace&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; MinorStep&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; MinorStepAuto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否自动设置小刻度步长<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinorUnit&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; Type&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;&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; Liner直接现实（自动）<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date按日期方式显示<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log 按指数幂方式显示<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ordinal顺序显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y2Axis&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;第二个Y轴坐标信息显示（具体设置看X轴）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Yaxis&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;第一个Y轴坐标信息显示（具体设置看X轴）<br/>GraphPane<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BarBase&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;在生成柱状图的时候设置柱状是基于X轴还是其他轴<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BarType&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;IsFontsScaled&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;IsIgnoreInitial&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;IsIgnoreMissing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否忽略缺省值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IsPenWidthScaled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;图比例变化时候图表上的画笔的粗细是否跟着自动缩放<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IsShowTitle&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;PaneFill&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; Pane的一些填充信息<br/>MasterPane<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseDimension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;缩放比例基数（可以试试效果）<br/>&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;&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IsImageMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不清楚干吗用的<br/>行为<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AxisChaneged&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否允许自动绘图（没试过，一般都true，动态绘图）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CacheDuration&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache保存时间0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputFormat&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;RenderedImagePath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RenderMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出模式，不太清楚一般都是ImageTag，另一个输出的是乱码不是图片<br/>对于图表而言，一般是三种表现形式：柱状图、饼状图和点线图。<br/><br/>newv.graph.GraphPane myPane = new GraphPane();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义绘制图表的大小<br/>&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;myPane.Title = "直方图";<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;myPane.XAxis.Title = "答题";<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;myPane.YAxis.Title = "人数";<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置基于X轴排列柱状图<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.BarBase = BarBase.X;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//y轴刻度显示为文本类型<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.XAxis.Type = AxisType.Text;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string[] machine =&#123; "xxx", "xxx40", "xxx0-60", "xxx70", "xxx0-80", "xxx0-90" &#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double[] efficiency =&#123; 22, 13, 89, 19, 56, 7 &#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double minNum = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double maxNum = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PointPairList lineList = new PointPairList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PointPairList lineList2 = new PointPairList();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double x = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double y = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int a = 2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int b = 89;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i < machine.Length; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (maxNum < efficiency[i])<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxNum = efficiency[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (i == 0) minNum = efficiency[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (minNum > efficiency[i])<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;minNum = efficiency[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = i;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = efficiency[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineList.Add(x, y);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (i == a)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineList2.Add(a, b);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineList2.Add(0, 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxNum = maxNum + 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (minNum / 10 > 1) minNum = (Math.Ceiling(minNum / 10) - 1) * 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else minNum = 0;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置X轴显示“柱子”的起始和终止位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.XAxis.Max = 7;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.XAxis.Min = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.YAxis.Min = minNum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.YAxis.Max = maxNum;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.XAxis.TextLabels = machine;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.XAxis.StepAuto = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.XAxis.ScaleFontSpec.Angle=-70;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//BarItem myCurve = myPane.AddBar("", null, efficiency, Color.Green);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LineItem myCurve = myPane.AddCurve("曲线", lineList, Color.Blue, SymbolType.Circle);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCurve.Line.IsSmooth = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LineItem myCurve2 = myPane.AddCurve("", lineList2, Color.Red, SymbolType.Circle);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCurve2.Line.IsVisible=false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.FontSpec.Angle = 90;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//BarItem myCurve3 = myPane.AddCurve((.AddBar("", Convert.ToDouble(3),Convert.ToDouble(89), Color.Red);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.Drawing.Graphics g=myPane.;<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;myPane.AxisChange(Graphics.FromImage(myPane.Image));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//myPane.AxisChange(g);<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//zgc.AxisChange();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string graphPath = "C:/Documents and Settings/Administrator/My Documents/Visual Studio 2008/Projects/WindowsApplication1/WindowsApplication1/filePath/" + "AnalysisGraph.bmp";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myPane.Image.Save(graphPath,System.Drawing.Imaging.ImageFormat.Png);
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/351.htm</link>
<title><![CDATA[div中英文无法自动换行的解决办法]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Sun, 29 Nov 2009 14:20:35 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/351.htm</guid> 
<description>
<![CDATA[ 
	问题：<br/><br/>在一个设定好宽度的div中，当我们输入的中文文字长度超过了设定宽度时，会自动换到下一行。但是，如果输入的是英文字母，那么，无论你div设定宽度为多少，英文字母都是不换行直接在同一行输出，导致div的宽度远远超出设定的大小。<br/><br/> <br/><br/>原因：这是因为div中，英文字母之间没有空格的话，它会默认认为这是一个英文单词，所以单词就一次输出不换行。那么，难道我们得在每个字母中间加入一个空格来解决这个问题么？其实不用的，可以通过CSS实现。<br/><br/> <br/><br/>解决办法：在div的style中设定word-break:break-all;即可实现自动换行。添加后的div代码大致如下<br/><br/><br/><div class="code">&lt;div style=&quot;word-break:break-all;width:20px“ &gt;现在这里的英文达到20px长度就会自动换到下一行了&lt;/div&gt;</div><br/>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/350.htm</link>
<title><![CDATA[SQL2005服务无法启动,错误代码3417的终极解决办法]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Sun, 22 Nov 2009 10:37:49 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/350.htm</guid> 
<description>
<![CDATA[ 
	<br/>sql2005,在服务管理里面启动sql的服务报出错误代码3417的错误。<br/>错误框提示为：“Windows不能在 本地计算机 启动 SQL Server(MSSQLSERVER)。有关更多信息，查阅系统事件日志。如果这是非Microsoft 服务，请与服务厂商联系，并参考特定服务错误代码3417.”<br/><br/>解决办法一：<br/>C:&#92;Program Files&#92;Microsoft SQL Server&#92;MSSQL.1&#92;MSSQL&#92;Data<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;C:&#92;Program Files&#92;Microsoft SQL Server&#92;MSSQL.2&#92;MSSQL&#92;Data<br/><br/>下的所有mdf和ldf默认都是按照解压缩方式保存的，只需要右键每一个文件---属性---高级---压缩内容以便节省磁盘空间 的勾&nbsp;&nbsp; 去掉即可。<br/><br/>解决办法二：<br/><br/>第一个解决不了就用这个了。<br/>打开 控制面板 -> 管理工具 -> 服务 <br/><br/>找到SQL Server 服务，右键，属性，找到登录选项，选择本地账户，确定就可以启动了。
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/349.htm</link>
<title><![CDATA[asp.net实现动态显示当前时间]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Tue, 03 Nov 2009 04:36:20 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/349.htm</guid> 
<description>
<![CDATA[ 
	asp.net实现动态显示时间的两个方法 <br/><br/>方法一：不用javascrip，而是用了AJAX。（开销比较大，每秒向服务器请求一次时间）<br/><br/>Default.aspx页面：先拉一个ScriptManager控件到页面，然后拉一个UpdatePanel控件。UpdatePanel里面放一个Label用于显示时间，放一个timer控件用于控制时间的更新。注意Label与Label都要放到UpdatePanel控件里面。最后，timer控件的Interval属性设置为1000，让它每1秒执行一次即更新时间。<br/>Default.aspx.cs页面：只需在<br/>protected void Page_Load(object sender, EventArgs e)<br/>里面输入<br/>Label1.Text = DateTime.Now.ToString();<br/>即可。<br/><br/><br/>下面是两个页面的源码：<br/><br/><br/>Default.aspx<br/><div class="code"><br/>&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;Default.aspx.cs&quot; Inherits=&quot;动态显示实时时间._Default&quot; %&gt;<br/><br/>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;<br/><br/>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;<br/>&lt;head runat=&quot;server&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;动态显示实时时间&lt;/title&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;style type=&quot;text/css&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.style1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: 183px;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/style&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt; &lt;asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:ScriptManager&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;table style=&quot; position: absolute;&nbsp;&nbsp;margin-left:200px; margin-right:200px; margin-top:100px; width:270px; height:78px; top: 15px; left: 10px;&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;动态显示实时时间&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&lt;td class=&quot;style1&quot;&gt;&lt;asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;&nbsp;&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ContentTemplate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前时间是：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Label ID=&quot;Label1&quot; runat=&quot;server&quot; Text=&quot;Label&quot;&gt;&lt;/asp:Label&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Timer ID=&quot;Timer1&quot; runat=&quot;server&quot; Interval=&quot;1000&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:Timer&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ContentTemplate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:UpdatePanel&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&lt;/tr&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/><br/></div><br/><br/>Default.aspx.cs<br/><br/>using System;<br/>using System.Collections;<br/>using System.Configuration;<br/>using System.Data;<br/>using System.Linq;<br/>using System.Web;<br/>using System.Web.Security;<br/>using System.Web.UI;<br/>using System.Web.UI.HtmlControls;<br/>using System.Web.UI.WebControls;<br/>using System.Web.UI.WebControls.WebParts;<br/>using System.Xml.Linq;<br/><br/>namespace 动态显示实时时间<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public partial class _Default : System.Web.UI.Page<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected void Page_Load(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Label1.Text = DateTime.Now.ToString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/><br/><br/>方法二：用JavaScript实现（注意：1、这里不用document.write来显示时间是因为document.write只在页面加载时执行，所以只刷新一次时间之后就没再执行，也就无法更新时间了。2、div是用来放时间的，其ID是near，所以用 near.innerHTML 来向它里面写时间。3、注意要在body标签里面加入onload="showtime()"让这个函数在页面加载时执行）<br/><br/>代码如下：<br/><br/><br/><div class="code">&lt;body onload=&quot;showtime()&quot;&gt;<br/><br/>&lt;script&nbsp;&nbsp; language=&quot;javascript&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;showtime();&nbsp;&nbsp; <br/>&nbsp;&nbsp;function&nbsp;&nbsp; showtime()&nbsp;&nbsp; <br/>&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;var&nbsp;&nbsp; hour=nowdate.getHours();&nbsp;&nbsp; <br/>&nbsp;&nbsp;var&nbsp;&nbsp; minutes=nowdate.getMinutes();&nbsp;&nbsp; <br/>&nbsp;&nbsp;var&nbsp;&nbsp; seconds=nowdate.getSeconds();&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;hour=(hour&lt;10)&nbsp;&nbsp; ?&nbsp;&nbsp; &quot;0&quot;+hour:hour;&nbsp;&nbsp; <br/>&nbsp;&nbsp;minutes=(minutes&lt;10)&nbsp;&nbsp; ?&nbsp;&nbsp; &quot;0&quot;+minutes:minutes;&nbsp;&nbsp; <br/>&nbsp;&nbsp;seconds=(seconds&lt;10)&nbsp;&nbsp; ?&nbsp;&nbsp; &quot;0&quot;+seconds:seconds; <br/><br/>&nbsp;&nbsp; near. innerHTML = &quot;现在时间:&quot;+hour+&quot;:&quot;+minutes+&quot;:&quot;+seconds ;<br/><br/>setTimeout(&quot;showtime()&quot;,1000);&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/><br/>&#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&lt;/script&gt; <br/>&lt;div id=&quot;near &quot;&gt;&lt;/div&gt;<br/>&lt;/body&gt;</div>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/281.htm</link>
<title><![CDATA[C#的窗体（WinForm）退出杂谈]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Thu, 24 Sep 2009 01:38:06 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/281.htm</guid> 
<description>
<![CDATA[ 
	1、Winform点击退出按钮，需要确认再退出：<br/> private void MainForm_FormClosing(object sender, FormClosingEventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (MessageBox.Show("是否确认退出程序？", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&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;this.Dispose();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Cancel = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/>2、程序退出的方法：<br/><br/><br/>this.Close();&nbsp;&nbsp; 只是关闭当前窗口，若不是主窗体的话，是无法退出程序的，另外若有托管线程（非主线程），也无法干净地退出； <br/>Application.Exit();&nbsp;&nbsp;强制所有消息中止，退出所有的窗体，但是若有托管线程（非主线程），也无法干净地退出； <br/>Application.ExitThread(); 强制中止调用线程上的所有消息，同样面临其它线程无法正确退出的问题； <br/>System.Environment.Exit(0);&nbsp;&nbsp; 这是最彻底的退出方式，不管什么线程都被强制退出，把程序结束的很干净。 <br/>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/275.htm</link>
<title><![CDATA[AjaxControlToolKit中 CalendarExtender(日历扩展控件)变为中文界面]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Tue, 18 Aug 2009 02:45:44 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/275.htm</guid> 
<description>
<![CDATA[ 
	ScriptManager控件的EnableScriptGlobalization属性 和EnableScriptLocalization属性设置为 true则&nbsp;&nbsp;CalendarExtender 控件为中文
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/274.htm</link>
<title><![CDATA[AjaxControlToolkit中各个控件功能说明]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Tue, 18 Aug 2009 02:39:54 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/274.htm</guid> 
<description>
<![CDATA[ 
	<span style="color: #008000;">1.Accordion控件</span><br/>1.1【功能概述】 <br/>Accordion可以让你设计多个panel 并且一次只显示一个Panel .在页面上的显示效果就像是使用了多个CollapsiblePanels只不过每一次只展开其中一个CollapsiblePanel.Accordion控件内部包含了若干个AccordionPane，每一个AccordionPane的template里包括了对其Header和Content的定义。我们可以在后台代码中通过SelectedIndex属性取得当前展开的哪一个Panel，还可以控制哪一个Panel展开。<br/>经常可以见到类似的效果，比如QQ、Msn好友分类的折叠效果。<br/>1.2【细节】 <br/>(1)不要把Accordion放在Table中而又把 FadeTransitions 设置为True，这将引起布局混乱<br/>(2)在AccordionPane模板中的Content中可以定义任何Web元素，表现的就像一个容器<br/>(3) AccordionPane内容模板自动改变大小有三种AutoSize modes ：None(推荐) Limit&nbsp;&nbsp;Fill<br/>(4)$find('ctl00_ContentPlaceHolder1_MyAccordion_AccordionExtender')这里找到的是Behavior.什么是Behavior呢？在Asp.net Ajax框架中包含一组动作并完成一个功能. Accordion的一个Behavior就是淡入淡出.<br/>找到Behavior的引用，behavior.set_FadeTransitions()&nbsp;&nbsp;behavior.get_FadeTransitions()的方式来实现具体某一个Behavior的访问和修改.<br/>var behavior = $find('ctl00_SampleContent_MyAccordion_AccordionExtender');这种写法是不好的，我们在自动测试的页面中发现了更好的写法： var behavior=$find("<%= MyAccordion.ClientID %>_AccordionExtender");<br/><br/><br/><br/><br/><br/><br/><span style="color: #008000;">2.AlwaysVisibleControl控件</span><br/>1.1【功能概述】 <br/>AlwaysVisibleControl 是一个简单的扩展控件可以让一部分内容浮动在页面上，当滚动页面或者改变浏览器大小时总是可见的。它可以扩展任意一个Asp.net 控件，并可按照要求设置水平 竖直方向上的相对距离.最多的应用是在线阅读的目录和不胜其烦的浮动小广告。<br/>1.2【细节】 <br/>(1)&nbsp;&nbsp; 避免控件闪烁，要扩展的控件要使用absolutely position<br/>(2)&nbsp;&nbsp; HorizontalSide="Center" VerticalSide="Top" 使用这个方式控制浮动的位置<br/>(3)&nbsp;&nbsp; Var label = ocument.getElementById('ctl00_SampleContent_currentTime');这行代码我们可以使用更简单的方法： var label = $get('ctl00_SampleContent_currentTime');<br/><br/><br/><br/><br/><br/> <br/><span style="color: #008000;">3.Animation控件</span><br/>1.1【功能概述】 <br/>28个控件种效果最酷的！顾名思义实现动画效果。它是一个插入式，可扩展的框架可以方便的为你的页面添加动画效果。<br/>1.2【细节】 <br/>(1)Sys.UI.DomElement.getLocation(b) 取得控件位置的函数，常用！！！<br/>(2)动画分为两种：Animation Action 后者的强大让我很兴奋<br/>(3)<Sequence>&nbsp;&nbsp;</Sequence> 顺序执行的动画脚本<br/>(4)<Parallel>&nbsp;&nbsp;<Parallel >&nbsp;&nbsp;并发执行的动画脚本<br/>(5)【Action】 <StyleAction AnimationTarget="btnCloseParent" Attribute="opacity" value="0" /> 控制目标元素外观样式，属性--值的格式修改，一个元素可以应用多个StyleAction<br/>(6)【Action】<EnableAction AnimationTarget="ctl00_ContentPlaceHolder1_btnInfo" Enabled="true" /> 控件是否可用使用的方式跟上面是一样的，当前控件可省略AnimationTarget<br/>(7)【Action】 <ScriptAction Script="Cover($get('ctl00_ContentPlaceHolder1_btnInfo'), $get('flyout'));" />执行一段脚本的Action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(8) 【Action】 <HideAction />隐藏目标的控件<br/>(9) 【Action】<OpacityAction AnimationTarget="info" Opacity="0" /> 设置透明度的Action<br/>(10)【Animation】 <FadeIn AnimationTarget="info" Duration=".2"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FadeOut /> 淡入淡出&nbsp;&nbsp;&nbsp;&nbsp;<br/>(11)【Animation】<Scale ScaleFactor="0.05" Center="true" ScaleFont="true" FontUnit="px" />&nbsp;&nbsp;&nbsp;&nbsp;控制目标元素的大小但是注意：If scaleFont is true, the size of the font will also scale with the element.&nbsp;&nbsp;If center is true, then the element's center will not move as it is scaled. It is important to note that the target must be positioned (i.e. absolutely) so that settings its top/left properties will change its location in order for center to have an effect. <br/>(12) 【Animation】&nbsp;&nbsp;&nbsp;&nbsp;<Pulse Duration=".1" /> 脉搏跳动效果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>(13)【Animation】 <Color Duration=".2" StartValue="#FFFFFF" EndValue="#FF0000" Property="style" PropertyKey="color" />&nbsp;&nbsp;颜色渐变效果，设置起始结束颜色就可以<br/>(14)&nbsp;&nbsp;【Animation】 <Resize Width="260" Height="280" />改变元素的大小Action<br/>(15)动画效果是在用户某一个动作发生的时候触发，触发的时机包括：OnLoad&nbsp;&nbsp;OnClick&nbsp;&nbsp;OnMouseOver OnMouseOut OnHoverOver OnHoverOut <br/>正式版的页面文件为动画脚本添加了注释更加清晰易懂.上面列出的是常用的一些动画效果，全部资料参见Anmation Reference。 <br/>仔细阅读Animation的页面代码，其实我们已经提前触摸到了Xaml的编程风格。Asp.net Ajax之后的下一代WEB界面是WPF/E,WPF/E现在支持的是”javascript+Xaml” 还不支持”C# + Xaml”。<br/><br/> <br/><br/><br/><br/><br/><span style="color: #008000;">4.AutoComplete控件</span><br/>1.1【功能概述】 <br/>AutoComplete控件是对Asp.net文本框控件的扩展，当用户词汇前面的字母时以弹出区域的形式给出备选词。这个功能的完成依赖于特定的Web Service。<br/><br/>在正式版的Ajax Control Toolkit中看到自动完成扩展控件有一种感觉：它终于出现在了它应该出现的地方。之前AutoComplete控件是在CTP版本中以核心组件的形式出现的，这个功能极为明确的控件被归类到核心组件，我还是比较迷惑。正式版中它终于成为了一个扩展控件。Google的自动完成功能，新浪 网易等信箱的收件人自动完成功能是这个功能的成功应用。<br/>1.2【细节】 <br/>(1)调用的Web Service方法签名有要求：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WebMethod]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string[] GetCompletionList(string prefixText, int count) &#123; ... &#125;<br/> (2)MinimumPrefixLength最短前缀字符数，就是说你至少要键入几个字符才会出现提示<br/><br/> <br/><br/><br/><br/><br/><span style="color: #008000;">5.Calendar控件</span><br/>1.1【功能概述】 <br/>Calendar同样是对文本框的扩展，当点击文本框的时候弹出日期选择选项。现在的版本提供的功能已经和WinForm中的日期控件一样，可以通过点击日期选择，点击箭头在年月之间切换。<br/>1.2【细节】 <br/>(1)同样是对文本框的扩展，文本框获得焦点就会出现日期选择，样式是可以自定义的<br/>(2)虽然一定是对文本框的扩展但是我们还是可以指定弹出按钮PopupButtonID，一旦这个值设定了，文本框获得焦点也不会弹出日期选择<br/>(3)不需要把它放在UpdatePanel中。<br/><br/> <br/><br/><br/><br/><br/><span style="color: #008000;">6.CascadingDropDown控件</span><br/>1.1【功能概述】 <br/>CascadingDropDown 控件是对ASP.NET DropDownList control的扩展，实现对一个DropDownList操作时其它DropDownList发生相应的变化。这个功能的实现依赖于Web Service。<br/>1.2.【细节】 <br/>(1)如果使用Web service 方法签名必须符合下面的形式：<br/> [WebMethod]<br/>public CascadingDropDownNameValue[] GetDropDownContents(<br/> string knownCategoryValues, string category)&#123;...&#125;<br/><br/>(2)在阅读代码的时候请关注：Category属性。官方说法The name of the category this DropDownList represents 打开~/App_Data/CarsService.xml你就发现这是Xml的元素标签。从这个角度我们就解决了为什么联动，即联动的本质；同时也明白了调用Service的参数约定。<br/><br/> <br/><br/><br/><br/> <br/><span style="color: #008000;">7.Animation控件</span><br/>1.1【功能概述】 <br/>这个控件几乎在每一个页面上都出现了。它是非常灵活的一个控件，可以扩展任何ASP.NET Panel control。在页面上轻松实现展开收缩效果。这种效果我们最熟悉的恐怕就是XP的文件任务栏了。<br/>1.2.【细节】 <br/>(1)CollapsiblePanel 默认认为使用了 标准 CSS box model 早期的浏览器要!DOCTYPE 中设置页面为自适应方式提交数据rendered in IE's standards-compliant mode.<br/><br/>(2)可以自动展开 自动收缩Autoexpand="true" AutoCollapse="true"但是这两个本身是互斥的不能同时为True;如果设置了这两个属性其中一个为True就不要在设置 Collapsed="True"，这样就没有意义了。<br/><br/><br/><br/><br/> <br/><span style="color: #008000;">8.ConfirmButton控件</span><br/>1.1【功能概述】 <br/>这个控件是对Button和继承了Button的控件的扩展，它可以捕捉到用户点击了对话框中的“是”“否”；如果是“是”就继续执行后面的代码，反之就停止执行它默认的提交行为。<br/>1.2.【细节】 <br/>(1) 要扩展的LinkButton Button 以及ConfirmButtonExtender都要放在updatepanel里面<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果是放在外面，点击“确定”或者“取消”之后还是会导致页面刷新！<br/>(2)更简单的方法：<br/>&nbsp;&nbsp;this.Button1.Attributes["onclick"]=" confirm('确定要停止下载么？');";<br/><br/> <br/><br/><br/><br/><span style="color: #008000;">9.DragPanel控件</span><br/>1.1【功能概述】 <br/>DragPanel extender可以轻松的让控件 "draggability".DragPanel 扩展的目标是任意 ASP.NET Panel .你可以设置拖动行为的细节，比如哪里是类似于标题栏一样的区域。<br/>1.2.【细节】 <br/>(1) TargetControlID 要拖动的控件<br/> <br/><br/><br/><br/><br/><br/> <br/><span style="color: #008000;">10.DropDown控件</span><br/>1.1【功能概述】 <br/>DropDown 同样是一个 ASP.NET AJAX extender 可以对任何 ASP.NET control 进行扩展实现 SharePoint-style drop-down menu效果。弹出的只不过是其它的panel或者控件而已。&nbsp;&nbsp;&nbsp;&nbsp;在IE浏览器中下拉列表总是在最前面的，的确是影响页面效果，这个控件的出现可以解决这一问题.这随时随地的弹出窗口成为WEB 2.0网站的标志性建筑，弹出的东西也越来越丰富。<br/>1.2.【细节】 <br/>(1)TargetControlID要在什么控件上实现扩展<br/>(2)DropDownControlID弹出控件的ID<br/><br/><br/><br/><br/><br/> <br/><span style="color: #008000;">11.DropShadow控件</span><br/>1.1【功能概述】 <br/>实现控件的阴影效果，可根据具体的属性调节阴影的半径，像素，大小。<br/>1.2.【细节】 <br/>(1)&nbsp;&nbsp; Width 单位：px&nbsp;&nbsp;默认5px<br/>(2)&nbsp;&nbsp; Opacity&nbsp;&nbsp;不透明度0-1.0 默认.5<br/><br/> <br/><br/><br/><br/> <br/><span style="color: #008000;">12.DynamicPopulate控件</span><br/>1.1【功能概述】 <br/>能实用Web Service或页面方法来动态的替换控件的内容。调用的方法返回的是一个Html的字符串，作为目标元素的子节点插入其中。<br/>1.2.【细节】 <br/>(1)ClearContentsDuringUpdate&nbsp;&nbsp;替换之前先清除以前的内容（默认True）<br/>(2)PopulateTriggerControlID 触发器绑定的控件 单击时触发<br/>(3)ContextKey传递给Web Service的随机字符串<br/>(4) Web Service方法签名必须符合下面的形式：<br/>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod]<br/>&nbsp;&nbsp;&nbsp;&nbsp;string DynamicPopulateMethod(string contextKey)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;...&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Note you can replace "DynamicPopulateMethod" with a naming of your choice, but the return <br/>&nbsp;&nbsp;&nbsp;&nbsp;type and parameter name and type must exactly match, including case. <br/><br/>(5) 我们非常欣慰的一点就是BehaviorID="dp1",这种用法是我所期望的。<br/><br/> <br/><br/><br/> <br/><span style="color: #008000;">13.FilteredTextBox控件</span><br/>1.1【功能概述】 <br/>FilteredTextBox扩展控件用来阻止用户在文本框输入无效字符 。由于这种效果的实现是依赖于javascript 验证,所以不要期望数据会发送到服务器端进行校验。<br/>1.2.【细节】 <br/>(1)过滤条件Numbers LowercaseLetters UppercaseLetters&nbsp;&nbsp; Custom<br/>(2)过滤条件也可以是Custom的组合 FilterType="Custom, Numbers"<br/>(3)ValidChars="+-=/*()." Custom要定义这样的有效字符串<br/><br/> <br/><br/><br/><span style="color: #008000;">14.HoverMenu控件</span><br/>1.1【功能概述】 <br/>HoverMenu控件可以扩展任何 ASP.NET WebControl, 同时将把附加的显示内容关联到该控件上，当用户移动鼠标到该控件的时候附加的内容将显示出来。<br/>1.2.【细节】 <br/>(1) PopupControlID要弹出来什么<br/>(2)PopupPostion 在哪里弹出来Left (Default), Right, Top, Bottom, Center.<br/>(3)OffsetX/OffsetY 弹出项与源控件的距离<br/>(4) PopDelay 弹出延时显示 单位milliseconds. Default is 100.<br/><br/> <br/><br/><br/><br/> <br/><span style="color: #008000;">15.ListSearch控件</span><br/>1.1【功能概述】 <br/>使用该控件可以在listbox和dropdownlist中，通过输入的方式找出匹配的项。<br/><br/> <br/><br/><br/><br/> <br/><span style="color: #008000;">16.MaskedEdit控件</span><br/>1.1【功能概述】 <br/>MaskedEdit 控件是对TextBox control的扩展.用户输入会在客户端进行验证，可用性不高。<br/><br/> <br/><br/><br/><br/> <br/><span style="color: #008000;">17.ModalPopup控件</span><br/>1.1【功能概述】 <br/>ModalPopup 扩展控件允许在页面上模式弹出内容并阻止用户和页面上其他区域的交互。模式弹出区域的样式都是可以自定义的。 用户可以在模式弹出框选择OK/Cancel，对用户选择的处理方式有两种：使用客户端脚本或者PostBack到服务器端。这样我们就得到了用户的选择结果！。<br/>1.2.【细节】 <br/>(1)&nbsp;&nbsp;这个控件是提供了一个模式弹出对话框的模板。<br/><br/><br/><br/><br/><br/><span style="color: #008000;">18.MutuallyExclusiveCheckBox控件</span><br/>1.1【功能概述】 <br/>MutuallyExclusiveCheckBox 是一个可以使得 CheckBox 具有类似 RadioButton 一样，在一系列的选项中只能选择一个的功能。但是和 RadioButton 不同，MutuallyExclusiveCheckBox 除了在一系列选项中选择一个的功能外，MutuallyExclusiveCheckBox 还可以呈现“不选任何一个”的状态。<br/>1.2.【细节】 <br/><ajaxToolkit:MutuallyExclusiveCheckboxExtender runat="server"<br/>&nbsp;&nbsp;&nbsp;&nbsp;ID="MustHaveGuestBedroomCheckBoxEx"<br/>&nbsp;&nbsp;&nbsp;&nbsp;TargetControlID="MustHaveGuestBedroomCheckBox" <br/>&nbsp;&nbsp;&nbsp;&nbsp;Key="GuestBedroomCheckBoxes" /><br/>•&nbsp;&nbsp;TargetControlID - 被 MutuallyExclusiveCheckBox 所控制的 CheckBox 控件 ID <br/>•&nbsp;&nbsp;Key - 用作标示为“同一组”的只可选其一的标识 <br/><br/> <br/><br/><br/><br/><br/><span style="color: #008000;">19.NoBot</span><br/>2.1【功能概述】 <br/>提供了简单的Captcha 图灵测试 用来屏蔽bot/spam 垃圾信息。是一个反垃圾信息控件。我查了一下资料，我的理解是：比如你点击一个按钮需要一秒钟的时间，而这一秒钟的时间你不可能再做其他的操作比如再点一次；这样区分出了人和机器。避免机器人自动点击 注册 暴力破解之类的事情<br/>2.2.【应用场景】 <br/>网 络上的垃圾信息似乎无处不在，从前是垃圾邮件、广告等。而现在，这些无孔不入的垃圾信息发布者又盯上了互联网上的各大网站。各种机器人程序（Bot）应运 而生，它们可以自动在网络上爬行并寻找带有评论或留言功能的页面，随即自动填写表单并提交，其提交垃圾信息的数量和质量更是让传统的手工发布者自愧不如。管理者往往一夜之间发现自己的网站下已经多了成千上万条广告，不但让真正有用的信息淹没于其中，更是让网站在性能上不堪重负。 <br/><br/>由此，很 多解决方法同样应运而生，其中最著名的当属各种验证图片了。这种验证图片中的文字由计算机随机生成，并尽其所能地对其进行扭曲、变形、修饰、模糊，最终要达到的目的是只有聪明的人类才能够分析出其中的内容（如图10-1所示），而当前水平的计算机却只能够望“图”兴叹。然后将用户对这幅图片的识别文本随表 单一起发送至服务器。这样，服务器即可通过检查客户端输入的识别文字的正确与否来判断这是否是人类所为，也就达到了区分机器人程序和人类的目的。<br/><br/> <br/><br/><br/><br/><br/><br/><span style="color: #008000;">20.NumericUpDown</span><br/>3.1【功能概述】 <br/>实现Winform里面的Updown控件，可以自定义最大值最小值增减步长，同时还可以使用值列表或者调用Web Service来决定下一个值是什么。上下按钮的图片同样是可以自定义的。<br/>3.2.【细节】 <br/>(1)普通整数增减 <br/>(2)值列表循环显示比如下面的第二个例子RefValues <br/> (3)调用Web Service的格式：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><ajaxToolkit:NumericUpDownExtender ID="NUD1" runat="server" <br/>&nbsp;&nbsp;&nbsp;&nbsp;TargetControlID="TextBox1" <br/>&nbsp;&nbsp;&nbsp;&nbsp;Width="100" <br/>&nbsp;&nbsp;&nbsp;&nbsp;RefValues="January;February;March;April" <br/>&nbsp;&nbsp;&nbsp;&nbsp;TargetButtonDownID="Button1" <br/>&nbsp;&nbsp;&nbsp;&nbsp;TargetButtonUpID="Button2" <br/>&nbsp;&nbsp;&nbsp;&nbsp;ServiceDownPath="WebService1.asmx" <br/>&nbsp;&nbsp;&nbsp;&nbsp;ServiceDownMethod="PrevValue" <br/>&nbsp;&nbsp;&nbsp;&nbsp;ServiceUpPath="WebService1.asmx" <br/>&nbsp;&nbsp;&nbsp;&nbsp;ServiceUpMethod="NextValue" <br/>&nbsp;&nbsp;&nbsp;&nbsp;Tag="1" /> <br/>(4)上下按钮如果不需美化就这样使用：TargetButtonDownID=" " TargetButtonUpID=" "<br/><br/><br/><br/><br/><br/> <br/><span style="color: #008000;">21.PagingBulletedList</span><br/>4.1【功能概述】 <br/>PagingBulletedList 扩展BulletedList的分页功能并实现客户端的排序分页。这里提供的分页是相当灵活的有各种分页方法供选择。<br/>4.2.【细节】 <br/>(1)可以控制每页最多显示多少条，是否排序 <br/>(2)IndexSize表示index headings 的字符数，如果MaxItemPerPage设置了概属性被忽略 <br/>(3)MaxItemPerPage分页每页最大条数<br/><br/><br/> <br/><br/><span style="color: #008000;">22.PasswordStrength</span><br/>5.1【功能概述】 <br/>验证密码强度，微软Live注册的时候就是用的这个效果。<br/>5.2.【细节】 <br/>StrengthIndicatorType两种显示方式：文字提示，进度条提示。<br/><br/> <br/> <br/><br/><br/><br/><br/><br/><br/><span style="color: #008000;">23.PopupControl</span><br/>6.1【功能概述】 <br/>PopupControl任何控件上都可以弹出任何内容，跟HoverMenu功能类似。Popup 窗口一般是放在ASP.NET AJAX UpdatePanel中, 因此它能够完成服务器端的处理之后更能新数据 <br/>显示. Popup Window 可以包含任何内容包括 ASP.NET server controls, HTML elements, etc.<br/>6.2.【细节】<br/>(1)TargetControlID - The ID of the control to attach to <br/>(2)PopupControlID - The ID of the control to display <br/>(3)CommitProperty -属性来标识返回的值 <br/>(4) CommitScript -把返回结果值通过脚本处理，用到CommitProperty<br/><br/> <br/><br/><br/><br/><br/><br/><span style="color: #008000;">24.Rating</span><br/>7.1【功能概述】 <br/>使用星级表示等级，鼠标操作；<br/>7.2.【细节】 <br/>鼠标移动等级也会变，鼠标移动划过效果，改变星级等级 <br/><br/> <br/><br/><br/><br/><span style="color: #008000;">25.ReorderList</span><br/>9.1【功能概述】 <br/>ReorderList是一个全新的控件。它可以实现逐条列出数据并实现交互。用户简单的拖拽就可以改变数据的排列顺序并更新到数据源。在本控件中如果SortOrderField 属性设置之后排序将自动完成。可以实现WINFORM中数据的鼠标拖拽效果。<br/>9.2.【细节】 <br/>(1)绑定数据，拖动数据之后数据将被更新到绑定源 <br/>(2)它不是已有控件的扩展是全新的服务器端控件，只是它对Ajax行为是敏感的 <br/>(3)重排的实现有两种方式：CallBack PostBack 前者的发生在页面上是没有PostBack的（也就是没有刷新页面） <br/>(4) 而数据添加或者编辑的时候就必须要使用PostBack来同步服务器端的数据状态&nbsp;&nbsp;(5)PostbackOnReorder就是针对两种策略进行选择<br/><br/><br/><br/> <br/><span style="color: #008000;">26.ResizableControl</span><br/>10.1【功能概述】 <br/>就像设计状态一样可以拖动修改大小，可以拖动放大或者缩小 <br/>10.2.【细节】 <br/>无<br/><br/> <br/><br/><br/><br/><br/><span style="color: #008000;">27.RoundedCorners</span><br/>11.1【功能概述】 <br/>控件圆角 纯粹是控制外观的了，可以通过选项来控制圆角属性和边框<br/>11.2.【细节】 <br/> (1)还有一个非常非常细节的地方：你必须要设置 CssClass="roundedPanel"要不然不起作用 <br/>&nbsp;&nbsp;(2) Radius设置弧度，默认是5 <br/>&nbsp;&nbsp;(3)只适用于容器 WebControl<br/><br/> <br/><br/><br/><br/><br/><br/><span style="color: #008000;">28.Slider</span><br/>12.1【功能概述】 <br/>实现WinForm中的Slider控件效果，新浪论坛用来分页了，还有的用来调整“时间----------&#124;----热度”。<br/>12.2.【细节】 <br/>(1)&nbsp;&nbsp; 修改文本框的值也可以影响Slider的状态<br/><br/><br/> <br/><br/><span style="color: #008000;">29.SlideShow</span><br/>13.1【功能概述】 <br/>实现图片自动播放器的功能，还可以手动选择播放图片<br/>132.【细节】 <br/>无<br/><br/> <br/><br/><br/><span style="color: #008000;">30.Tabs</span><br/>14.1【功能概述】 <br/>实现Tabs卡片模块的功能<br/>14.2.【细节】 <br/>无<br/><br/> <br/><br/><br/><br/><span style="color: #008000;">31.TextBoxWatermark</span><br/>15.1【功能概述】 <br/>对文本框进行扩展，文本水印效果。在文本框中有提示的效果。当鼠标点进入时提示自动消失。<br/>15.2.【细节】 <br/>无<br/><br/> <br/><br/><br/><br/><span style="color: #008000;">32.ToggleButton</span><br/>16.1【功能概述】 <br/>就是把一个CheckBox的逻辑应用到一个按钮上，于是就有了双态按钮。<br/>实际上示例页面并没有突出这个控件功能上的优势，对这个控件的操作引起页面上数据的更新，这才是CheckBox控件封装成Button的最终原因。可以双击图标可以更新页面上的状态<br/>16.2.【细节】 <br/>无<br/><br/><br/><span style="color: #008000;">33.UpdatePanelAnimation</span><br/>17.1【功能概述】 <br/>更新动画效果，当当网在查询商品时有一个更新的过程，其中其更新商品的过程累世效果二<br/>17.2.【细节】 <br/>无<br/><br/><br/><span style="color: #008000;">34.ValidatorCallout</span><br/>18.1【功能概述】 <br/>对于表单或者登陆的用户名密码可以起到很好的提示，在界面上是个友好的提示，也可以做验证的功能，控件本身可以使用正则表达试来对输入的判断。<br/>18.2.【细节】 <br/>无<br/>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/270.htm</link>
<title><![CDATA[SQL语句重命名数据库表和表中的列]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Tue, 04 Aug 2009 03:16:42 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/270.htm</guid> 
<description>
<![CDATA[ 
	A.&nbsp;&nbsp; 重命名表&nbsp;&nbsp; <br/>&nbsp;&nbsp;将表&nbsp;&nbsp; oldTableName&nbsp;&nbsp;重命名为&nbsp;&nbsp;newTableName ：<br/>&nbsp;&nbsp;EXEC&nbsp;&nbsp; sp_rename&nbsp;&nbsp; 'oldTableName','newTableName'&nbsp;&nbsp; <br/> <br/><br/>B.&nbsp;&nbsp; 重命名列&nbsp;&nbsp; <br/>&nbsp;&nbsp;将表 EMIS&nbsp;&nbsp;中的列&nbsp;&nbsp; oldName&nbsp;&nbsp;重命名为&nbsp;&nbsp; newName。&nbsp;&nbsp; <br/>&nbsp;&nbsp;EXEC&nbsp;&nbsp; sp_rename&nbsp;&nbsp; 'EMIS.oldName',&nbsp;&nbsp; 'newName',&nbsp;&nbsp; 'COLUMN'&nbsp;&nbsp;<br/><br/>注意：newName前面不用加上EMIS。sp_name这个系统的存储过程，public的用户都能够执行！<br/><br/><br/>C.向表中新增字段： <br/>ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL&nbsp;&nbsp;<br/><br/>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/267.htm</link>
<title><![CDATA[windows7下安装VS2008无法破解的解决方法]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Thu, 30 Jul 2009 10:43:52 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/267.htm</guid> 
<description>
<![CDATA[ 
	原先在XP/Vista下破解VS的方法是安装VS2008后在“添加/删除程序”中输入序列号，然而，Windows 7下“添加/删除程序”中根本就不出现要求输入序列号的位置。<br/>那么我们该怎么做才能破解呢？<br/><br/>如果你已经安装了VS2008了，那么恭喜你，这篇文章不用看了，没救了~O(∩_∩)O~<br/><br/>如果你尚未安装，那么以下是破解方法：<br/>1，将VS2008的安装镜像文件全部解压到硬盘上（注意，从VISTA开始就不可以用虚拟光驱安装了，所以要解压，不信的话可以试试~）。<br/>2，打开那一堆文件夹中一个叫Setup文件夹，用记事本打开这个文件夹下的setup.sdb文件，找到[Product Key]这一部分，你可以看到一个序列号，这个是盗版的啦，快替换为正确的序列号。之后再安装即可成为正式版了。正版序列号：PYHYPWXB3BB2CCMV9DX9VDY8T<br/><br/><br/>如果你安装VS2008出错，那很悲剧，你能要看一看这篇文章了：<a href="http://www.piikee.net/read.php?266" target="_blank">http://www.piikee.net/read.php?266</a>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/266.htm</link>
<title><![CDATA[Windows 7下IIS+VS2008+Office2007无错完美安装方法]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Thu, 30 Jul 2009 10:35:28 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/266.htm</guid> 
<description>
<![CDATA[ 
	（1）先把IIS给装上。<br/>（2）安装VS2008。<br/>（3）安装Office2007。<br/>注意顺序，还有VS2008必须解压出来安装，不能用虚拟光驱。仅此而已。
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/265.htm</link>
<title><![CDATA[C#泛型的好处]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Mon, 06 Jul 2009 03:16:38 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/265.htm</guid> 
<description>
<![CDATA[ 
	关于object类型：<br/>1.object类型可以来引用任何类型的实例；<br/>2.object类型可以存储任何类型的值；<br/>3.可以定义object类型的参数；<br/>4.可以把object作为返回类型。<br/>但是--这样做有很大的问题<br/><br/>1.会因为程序员没有记住使用的类型而出错，造成类型不兼容；<br/>2.值类型和引用类型的互化即装箱拆箱使系统性能下降。<br/><br/>C#2.0提出的泛型就是避免强制类型转换，减少装箱拆箱提高性能，减少错误。<br/><br/>System.Collections.Generic命名空间提供许多集合类和接口的泛型版本。<br/><br/>定义：<br/>public class GenericList<T><br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void Add(T input)//T制定成类型参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;public T Add()//T制定成返回值<br/>&#125;<br/><T>的T是类型参数，起占位符的作用，编译时被真正类型取代。<br/><br/>使用泛型：<br/>GenericList<int> list1 = new GenericList<int>();<br/>GenericList<string> list2 = new GenericList<string>();<br/>GenericList<类名> list3 = new GenericList<类名>();<br/>GenericList<类名<int>> list4= new GenericList<类名<int>>();<br/>以list1为例编译器生成以下的方法：<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void Add(int input)<br/>&nbsp;&nbsp;&nbsp;&nbsp;public int Add()<br/><br/>有多个类型参数的泛型类：<br/>public class 类名<T,U><br/><br/>泛型约束：<br/>确保泛型类使用的参数是提供特定方法的类型。<br/>public class GenericList<T> where T : IEmployee <br/>假如IEmployee接口包含A方法，编译器会验证用于替换T的类型一定要实现IEmployee接口。<br/><br/><br/>泛型方法：允许采取定义泛型类时采用的方式<br/><br/>//定义泛型方法static void Swap<T>(ref T lhs, ref T rhs)<br/>&#123; T temp; temp = lhs; lhs = rhs; rhs = temp; &#125;<br/>//使用泛型方法<br/>public static void TestSwap()&#123;&nbsp;&nbsp;&nbsp;&nbsp;int a=1,b=3;Swap<int>(ref a,ref b);<br/>string s1="Hello",s2="world";Swap<string>(ref s1,ref s2);&#125;<br/>有泛型类，泛型接口，泛型方法，泛型委托<br/><br/>
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/257.htm</link>
<title><![CDATA[C#窗体也有DOCK属性]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Thu, 04 Jun 2009 11:34:02 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/257.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;在一个主窗体里面，放入一个PANEL和一个窗体。然后，里面那个窗体最大化时，会覆盖了PANEL或者被PANEL覆盖。<br/><br/>&nbsp;&nbsp;要让里面的窗体最大化时刚好把PANEL剩下的空间填满可以这样做： 把form2.Dock = DockStyle.Fill;放到主窗体里面。<br/><br/>&nbsp;&nbsp;如果觉得form2的边框不好看，还可以设置一下FORMBORDERSTYLE属性，把边框去掉。这样form2就可以把form1中PANEL剩下的空间填满了~
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/255.htm</link>
<title><![CDATA[图解vs2008打包全过程，含卸载功能]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Fri, 29 May 2009 13:15:04 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/255.htm</guid> 
<description>
<![CDATA[ 
	1:新建安装部署项目 <br/><br/>打开VS编辑器,点击新建项目,选择:其他项目类型--安装与部署--安装向导(安装项目也一样),然后点击确定.(详细见下图) <br/>本文虽以VS2005打包为例，但是在VS2008下一样也可以用此法，本人已经在VS2008下测试通过。 <br/><a href="http://www.piikee.net/attachment.php?fid=40" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=40" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>2:安装向导 <br/>关闭后打开安装向导,点击下一步,或者直接点击完成. <br/><br/>3:开始制作 <br/>安装向导完成后即可进入项目文件夹: <br/>双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来. <br/><a href="http://www.piikee.net/attachment.php?fid=41" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=41" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>然后右击你的可执行文件,创建快捷方式,然后把快捷方式分别剪切或复制到左边的"用户的'程序'菜单"和"用户桌面"中. <br/>这样安装程序安装安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式. <br/><a href="http://www.piikee.net/attachment.php?fid=42" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=42" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>然后右击左边的"应用程序文件夹"打开属性对话框: <br/>将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉, <br/>不然的话做好的安装程序默认安装目录会是"c:&#92;programm file&#92;你的用户名&#92;安装解决方案名称"; <br/>然后打开解决方案管理器,右击你的解决方案名称,选择属性: <br/><br/>在打开的属性页中,选择"系统必备",<br/><a href="http://www.piikee.net/attachment.php?fid=43" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=43" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>在打开的系统必备页中,选中如下中的选择项,这个很重要!!!!!1!!!!! <br/>选上以后,在生成的安装文件包中包含.netframework组件.(这个选项默认是没有选中的) <br/><a href="http://www.piikee.net/attachment.php?fid=44" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=44" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>上面这里具体看你的程序了。.net3.5默认选中。不需要修改了。 <br/><br/>好了,这样就完成99%了,然后点击"生成->生成解决方案",哈,生成成功! <br/>4:制作完成 <br/>现在打开解决方案文件夹下的debug文件夹,就可以看到生成的安装文件了. <br/><br/>【续】关于"卸载"功能的添加 <br/>上面的文章只介绍了简单的生成安装的方法, <br/>但是在vs.net2005下并没有直接生成卸载程序的功能, <br/>所以我们只好用msi来实现了, <br/>原理我就不讲了,网上一搜一堆,我只讲操作, <br/>【1】：在添加你的应用程序项目的时候，多添加一个msiexec.exe进去, <br/>这个文件在c:&#92;windows&#92;system32文件夹下, <br/><a href="http://www.piikee.net/attachment.php?fid=45" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=45" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe", <br/>当然这个关系不大,改不改都行的. <br/>然后给他创建一个快捷方式,放到桌面或者"开始-程序"中, <br/>我选择放在了开始菜单中,然后下面我们要的做的就是查找这个部署项目的ProductCode了, <br/>鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性, <br/>这个区别很大,这时你就可以看到ProductCode了, <br/><a href="http://www.piikee.net/attachment.php?fid=46" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=46" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>然后打开你创建的那个快捷方式的属性对话框, <br/>在Aguements属性中输入"/x &#123;ProductCode&#125;", <br/><a href="http://www.piikee.net/attachment.php?fid=47" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=47" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><a href="http://www.piikee.net/attachment.php?fid=48" target="_blank"><img src="http://www.piikee.net/attachment.php?fid=48" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>好了,然后点击"生成解决方案"即可生成带有卸载功能的安装程序了.
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/253.htm</link>
<title><![CDATA[SQL卸载重装遇到实例名重复，实例名删不掉的问题]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Mon, 25 May 2009 16:15:37 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/253.htm</guid> 
<description>
<![CDATA[ 
	Sql2005卸载后，在重新安时会碰到以前安装的实例名还在的问题，然后如果自定义实例名一样的话会报错说实例名重复。那么怎样删除以前的那些实例名呢？<br/>首先，确认你把所有SQL相关程序都卸载了。<br/>然后，删除C:&#92;Program Files&#92;Microsoft SQL Server这整个文件夹。<br/>最后，运行——regedit，打开注册表<br/>删除[HKEY_LOCAL_MACHINE&#92;SOFTWARE&#92;Microsoft&#92;Microsoft SQL Server]主键<br/>删除[HKEY_CURRENT_USER&#92;Software&#92;Microsoft&#92;Microsoft SQL Server]主键<br/><br/>重新启动计算机<br/>重装Sql2005即可
]]>
</description>
</item><item>
<link>http://www.piikee.net/read.php/252.htm</link>
<title><![CDATA[SQL 2005中设置两个主键的方法]]></title> 
<author>piikee &lt;piikee@piikee.net&gt;</author>
<category><![CDATA[.net专区]]></category>
<pubDate>Sun, 24 May 2009 14:33:44 +0000</pubDate> 
<guid>http://www.piikee.net/read.php/252.htm</guid> 
<description>
<![CDATA[ 
	SQL2005中，可视化见表，选中一行设置主键，然后再选一行设置主键，则刚才设置的主键就自动取消了。怎么设置两个主键呢。其实Windows中很多东西都是融会贯通的，想一想多选的Ctrl键不就解决了~ 按住Ctrl，用鼠标选两个行，然后右键，设置主键，问题就解决了~
]]>
</description>
</item>
</channel>
</rss>