??xml version="1.0" encoding="utf-8" standalone="yes"?>国产在线视频网站,亚洲国产一区二区精品视频,在线免费精品视频http://www.aygfsteel.com/AndyZhang/welcome to java worldzh-cnThu, 22 May 2025 10:13:23 GMTThu, 22 May 2025 10:13:23 GMT60WinFormH体间如何传?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2014/03/04/410598.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Tue, 04 Mar 2014 08:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2014/03/04/410598.html</guid><description><![CDATA[<div m_b_15"="" style="margin: 10px 0px 0px; padding: 15px; background-color: #f7f7f7; border: 1px solid #e1eded; line-height: 24px; font-family: simsun; overflow: hidden; text-indent: 24px; color: #333333;"><span style="margin: 0px; padding: 0px; font-weight: bold;">本文D</span>Q稍微复杂一点的E序一般都有两个或者更多的H体。有时在E序设计中,数据不仅要在同一个窗体中传递,q要在窗体间传递,其是用子窗体如何改变父H体。WinForm多窗体间传值的Ҏ(gu)有很多,Ҏ(gu)需要传送的值的cd可以采用不同的方?/div><div class="wmqeeuq" id="contentText" style="margin: 0px; height: 9940px; overflow: hidden; color: #333333; font-family: simsun; line-height: 26px; background-color: #ffffff;"><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">H体间传递数据,无论是父H体操作子窗体,q是子窗体操作符H体Q有以下几种方式Q?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><ol style="margin: 0px; padding: 0px; list-style: none;"><li style="margin: 0px; padding: 0px; list-style: none;">公共?rn)态变量;</li><li style="margin: 0px; padding: 0px; list-style: none;">使用共有属性;</li><li style="margin: 0px; padding: 0px; list-style: none;">使用委托?sh)事Ӟ?/li><li style="margin: 0px; padding: 0px; list-style: none;">通过构造函数把ȝ体传递到从窗体中Q?/li></ol><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><strong style="margin: 0px; padding: 0px;">一、通过?rn)态变?/strong></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><strong style="margin: 0px; padding: 0px;">特点Q传值是双向的,实现?/strong></span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><strong style="margin: 0px; padding: 0px;">实现代码如下Q?/strong></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;">在一?span face="Times New Roman" style="margin: 0px; padding: 0px;">app</span>cM定义一个静(rn)态成?span face="Times New Roman" style="margin: 0px; padding: 0px;">value</span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public class app</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public static string value;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>中这栯?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">app.value = "f2"; //</span>l静(rn)态成员赋?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">new Form2 ( ).Show ( ); //</span>昄<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">this.Text = app.value; //</span>取回<span face="Times New Roman" style="margin: 0px; padding: 0px;">app.value</span>的?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">app.value = "Form2"; //</span>l?span face="Times New Roman" style="margin: 0px; padding: 0px;">app.value</span>赋|以便其他H体调用</span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 16px;">二、公共变?/span><span style="margin: 0px; padding: 0px; font-size: 16px;">传?/span></strong></span></p><p style="margin: 20px 0px 0px; padding: 0px;">q种Ҏ(gu)是利用一个公共变量,先把需要的值存攑ֈq个公共变量Q然后需要的时候再通过d该变量的值来使用</p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">例子</strong></p><p style="margin: 20px 0px 0px; padding: 0px;">Form1Q?/p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public static string Form1Value; // 注意Q必ȝ明ؓ(f)static变量</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">private void button1_Click(object sender, EventArgs e)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form1Value = "来自Form1";</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">new Form2().Show();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;">Form2Q?/p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">private void Form_Load(object sender, EventArgs e)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">MessageBox.Show(Form1.Form1Value);</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;">q种方式传|理解和用上都相对的单,但是Ҏ(gu)让变量串|比如W一ơ修改ؓ(f)“a”Q而第二次修改?#8220;b”Q则有可能本来需?#8220;a”值的l果变成?#8220;b”?/p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><strong style="margin: 0px; padding: 0px;">三、静(rn)态方法方式访?/strong></span></p><p style="margin: 20px 0px 0px; padding: 0px;">q种Ҏ(gu)与传值方法的W一U有些类|是需要被其他H体讉K的方法用static定义Q以便其他传递可以直接访问到</p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">例子</strong>Q?/p><p style="margin: 20px 0px 0px; padding: 0px;">Form1:</p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">private void button1_Click(object sender, EventArgs e)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">new Form2().Show();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public static void FF()</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">MessageBox.Show("Form1Ҏ(gu)");</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;">Form2:</p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">private void Form_Load(object sender, EventArgs e)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form1.FF();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;">使用q种Ҏ(gu)讉K其他H体的方法,在跨H体上实现方便,但是需要需要访问到控g值则不能直接讉KQ需要将值先传递给其他H体Q再有窗体传递回来,或者存储在其他变量后对q变量进行访问?/p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">四、通过H体的公有属性?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">特点Q实现简?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">实现代码如下Q?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>中定义一个公有属?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2Value,</span>获取和设|?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1</span>的文本?/p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public string Form2Value</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">get</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">return this.textBox1.Text;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">set</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">this.textBox1.Text = value;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>中这栯?/p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form2 f2 = new Form2 ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">f2.Form2Value = "Ok"; //</span>l?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1</span>赋?span face="Times New Roman" style="margin: 0px; padding: 0px;">Ok</span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">f2.ShowDialog ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"> </strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">五、通过H体的公有属性值和<span face="Times New Roman" style="margin: 0px; padding: 0px;">Owner</span>属?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">特点Q实现简?span face="Times New Roman" style="margin: 0px; padding: 0px;">,</span>灉|</strong></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">实现代码如下</strong>Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public int Form1Value = 1;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form2 f2 = new Form2 ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">f2.ShowDialog ( this ); //</span>?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>作ؓ(f)<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>的所有者传递给<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//Form2</span>的所有者是<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form1 f1 = ( Form1 ) this.Owner;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//</span>取到<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>的值是<span face="Times New Roman" style="margin: 0px; padding: 0px;">1</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">MessageBox.Show ( f1.Form1Value .ToString ( ) );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//</span>l?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1Value</span>赋?span face="Times New Roman" style="margin: 0px; padding: 0px;">222</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">f1.Form1Value = 222;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">六?/span>通过H体的公有属性值和<span face="Times New Roman" style="margin: 0px; padding: 0px;">Application.OpenForms</span>属?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">说明Q?span face="Times New Roman" style="margin: 0px; padding: 0px;">Application.OpenForms</span>属性:(x)获取属于应用E序的打开H体的集合?span face="Times New Roman" style="margin: 0px; padding: 0px;">(</span>此属性在<span face="Times New Roman" style="margin: 0px; padding: 0px;">.NET Framework2.0</span>版中<span face="Times New Roman" style="margin: 0px; padding: 0px;">)</span></span></strong></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">实现代码如下</strong>Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public int Form1Value = 1;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form2 f2 = new Form2 ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">f2.Show ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">string formName = "Form1";</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form fr = Application.OpenForms [ formName ];</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">if ( fr != null )</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form1 f1 = ( Form1 ) fr;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//</span>取到<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>的值是<span face="Times New Roman" style="margin: 0px; padding: 0px;">1</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">MessageBox.Show ( f1.Form1Value.ToString ( ) );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//</span>l?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1Value</span>赋?span face="Times New Roman" style="margin: 0px; padding: 0px;">222</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">f1.Form1Value = 222;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 16px;">七、传参式传?/span></strong></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">此方法顾名思义是需要的g参数形式传递给需要值的H体</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">例子</strong>Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">private void button1_Click(object sender, EventArgs e)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">new Form2("来自Form1").Show();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2:</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public Form2(string value)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">InitializeComponent();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">MessageBox.Show(vaue);</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">此种H体间传值方法明显优?sh)第一U的传值参敎ͼ也不?x)出C数据现象Q但是需要注意修改Form2的构造函敎ͼ每个H体的默认构造函数默认都是无参数的,因此需要去修改构造函数?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">八、通过构造函?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">特点Q传值是单向的(不可以互怼|(j)Q实现简?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">实现代码如下Q?/strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">int value1;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">string value2;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public Form2 ( int value1 , string value2 )</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">InitializeComponent ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">this.value1 = value1;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">this.value2 = value2;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>中这栯?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">new Form2 ( 111 , "222" ).Show ( ); //</span>q样把<span face="Times New Roman" style="margin: 0px; padding: 0px;">111,"222",</span>q?span face="Times New Roman" style="margin: 0px; padding: 0px;">2</span>个g送给?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;">?ji)、用委托来实现?/span></strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">委托可以把一个方法作为参数带入另一个方法,在窗体传gQ子H体需要执行一个方法来改变父窗体的|</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">而这个方法,则可以用委托?sh)父H体传递过来。在父窗体中Q声明修Ҏ(gu)本框的方法AfterChildChangeQ在new一个子H体的时候,这个方法传递给子窗体。那么当子窗体点d步按钮时Q会(x)执行父窗体的AfterChildChangeҎ(gu)Q已辑ֈ修改文本框值的目的?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">例子</strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">1、在子窗体中讄一个委托类型的属性:(x)</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public Action<string> AfterChangeTextDel { get; set; }</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">2、在子窗体同步按钮中Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">if (AfterChangeTextDel != null)<br />{<br />AfterChangeTextDel(this.textBox1.Text);//执行委托<br />}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">3、在父窗体中dҎ(gu)Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public void AfterChildChange(string text)<br />{<br />txtName.Text = text;<br />}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">4、在父窗体启动子H体按钮Q?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">ChildFrm frm =new ChildFrm();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">frm.AfterChangeTextDel = new Action<string>(this.AfterChildChange);</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">frm.Show();</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">5、这样也能实现窗体传|子窗体的委托可以在父H体 其他地方可以q行直接执行。:(x)解决此问题。微软引入了(jin)事g?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #000000;"><strong style="margin: 0px; padding: 0px;">十、用事g来实?/strong></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">事g是委托类型的对象。它内部是用委托来实现的Q对于事件来_(d)外部只能注册自己+=Q注销自己-=,外界不可以注销其他的注册者,也不能主动触发事件。而委托则无法实现q些控制Q因此诞生了(jin)事gq话总语法?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">实现代码如下</strong></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>中定义公有属?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2Value,</span>获取和设|?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1</span>的文本?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">q且q定义一?span face="Times New Roman" style="margin: 0px; padding: 0px;">accept</span>事g</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public string Form2Value</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">get</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">return this.textBox1.Text;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">set</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">this.textBox1.Text = value;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">public event EventHandler accept;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"> </p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">private void button1_Click ( object sender , EventArgs e )</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">if ( accept != null )</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">accept ( this , EventArgs.Empty ); //</span>当窗体触发事Ӟ传递自w引?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">在窗?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form1</span>?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form2 f2 = new Form2 ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">f2.accept += new EventHandler ( f2_accept );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">f2.Show ( );</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">void f2_accept ( object sender , EventArgs e )</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">{</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//</span>事g的接收者通过一个简单的cd转换得到<span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>的引?/span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">Form2 f2 = (Form2) sender;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;"><span face="Times New Roman" style="margin: 0px; padding: 0px;">//</span>接收?span face="Times New Roman" style="margin: 0px; padding: 0px;">Form2</span>?span face="Times New Roman" style="margin: 0px; padding: 0px;">textBox1.Text</span></span></span></span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">this.textBox1.Text = f2.Form2Value;</span></p><p style="margin: 20px 0px 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: #0000cd;">}</span></p></div><img src ="http://www.aygfsteel.com/AndyZhang/aggbug/410598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2014-03-04 16:32 <a href="http://www.aygfsteel.com/AndyZhang/archive/2014/03/04/410598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>!page.ispostback 的意?用法Q?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2012/05/01/377129.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Tue, 01 May 2012 14:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2012/05/01/377129.html</guid><description><![CDATA[<p>!Page.IsPostBackQ表C页面首ơ加?q有按钮默认是回发服务器的,所以点?yn)L钮页面会(x)h? </p> <p>    控g都是服务器端的控? 如果你的控g设ؓ(f)自动回发到服务器Q即AutoPostBack属性设为TrueQ,执行每次操作都会(x)提交到后台处?是所谓的后台代码Q即以[.aspx.cs]l尾的页?,也就要在再次加蝲面的同时做出相应的操作Q所以先再次执行page_load事gQ执行了(jin) if(!page.IsPostBack){}外的代码 后再执行其它的操作(你在面上的操作Q。处理完再回发到Q即跌{到相应的面。如果还是回发到原来的页面,则这时候该面׃是第一ơ加载了(jin)Q而是俗称的回传页?/p> <p>      ?if(!page.IsPostBack){ q里是首ơ加载页面时要实现的功能代码Q} 代码写在page_load事g中?span style="color: red">q?/span><span style="color: red">可以使用if(!IsPostBack)来判?#8212;—是否是当前页面控件的操作 Q!</span></p> <img src ="http://www.aygfsteel.com/AndyZhang/aggbug/377129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2012-05-01 22:46 <a href="http://www.aygfsteel.com/AndyZhang/archive/2012/05/01/377129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为工hd鼠标的“按下、移动、松开”三个事Ӟ用来UdH体http://www.aygfsteel.com/AndyZhang/archive/2012/04/27/376782.htmlSkyDreamSkyDreamFri, 27 Apr 2012 08:50:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/27/376782.html        private bool isMouseDown = false;
        private Point FormLocation;     //form的location
        private Point mouseOffset;      //鼠标的按下位|?br />        private void toolStrip1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = true;
                FormLocation = this.Location;
                mouseOffset = Control.MousePosition;
            }

        }

        private void toolStrip1_MouseUp(object sender, MouseEventArgs e)
        {
            isMouseDown = false;
        }

        private void toolStrip1_MouseMove(object sender, MouseEventArgs e)
        {
            int _x = 0;
            int _y = 0;
            if (isMouseDown)
            {
                Point pt = Control.MousePosition;
                _x = mouseOffset.X - pt.X;
                _y = mouseOffset.Y - pt.Y;

                this.Location = new Point(FormLocation.X - _x, FormLocation.Y - _y);
            }

        }



SkyDream 2012-04-27 16:50 发表评论
]]>
C# 计算文g的MD5(g息摘要算?http://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376399.htmlSkyDreamSkyDreamMon, 23 Apr 2012 09:40:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376399.htmlMD5 ?Message Digest Algorithm 5Q信息摘要算法)(j)的羃写,MD5 一U散?Hash)技术,q泛用于加密、解密、数据签名和数据完整性校验等斚w。Q何一个文Ӟ无论是可执行E序、图像文件、(f)时文件或者其他Q何类型的文gQ也不管它体U多大,都可以计出一个MD5|如果文g被修改过Q就只改动?jin)一个字节,?MD5 g?x)变得完全不同。因此,我们可以通过Ҏ(gu)同一文g?MD5 |来校验这个文件是否被“改”q?/font>

C# 可以方便的计出文g?MD5 |(x)

/// <summary>
/// 计算文g?nbsp;MD5 ?br />/// </summary>
/// <param name="fileName">要计?nbsp;MD5 值的文g名和路径</param>
/// <returns>MD5 ?6q制字符?/span></returns>
public static string MD5File(string fileName)
{
    
return HashFile(fileName, "md5");
}

/// <summary>
/// 计算文g的哈希?br />/// </summary>
/// <param name="fileName">要计哈希值的文g名和路径</param>
/// <param name="algName">法:sha1,md5</param>
/// <returns>哈希?6q制字符?/span></returns>
public static string HashFile(string fileName, string algName)
{
    
if (!System.IO.File.Exists(fileName))
        
return string.Empty;

    FileStream fs 
= new FileStream(fileName, FileMode.Open, FileAccess.Read);
    
byte[] hashBytes = HashData(fs, algName);
    fs.Close();
    
return ByteArrayToHexString(hashBytes);
}

/// <summary>
/// 计算哈希?br />/// </summary>
/// <param name="stream">要计哈希值的 Stream</param>
/// <param name="algName">法:sha1,md5</param>
/// <returns>哈希值字节数l?/span></returns>
public static byte[] HashData(Stream stream, string algName)
{
    HashAlgorithm algorithm;
    
if (algName == null)
    {
        
throw new ArgumentNullException("algName 不能?nbsp;null");
    }
    
if (string.Compare(algName, "sha1"true== 0)
    {
        algorithm 
= SHA1.Create();
    }
    
else
    {
        
if (string.Compare(algName, "md5"true!= 0)
        {
            
throw new Exception("algName 只能使用 sha1 ?nbsp;md5");
        }
        algorithm 
= MD5.Create();
    }
    
return algorithm.ComputeHash(stream);
}

    ComputeHash Ҏ(gu)q回的是哈希值字节数l,而文件的 MD5 值通常是用16q制的字W串表示Q?font face="Verdana">字节数组转换?6q制表示的字W串的方法在 System.Web.Configuration.MachineKeySection 中已l提供了(jin)一个名?span class="Apple-converted-space"> ByteArrayToHexString Ҏ(gu)Q但是该Ҏ(gu)?font face="Verdana">NonPublic 的,我们不能直接调用。这里我?font face="Verdana">通过反射来调?MachineKeySection 中的 ByteArrayToHexString Ҏ(gu)?/font>

通过反射调用 MachineKeySection 中的 ByteArrayToHexString Ҏ(gu)Q?/span>

/// <summary>
/// 字节数组转换?6q制表示的字W串
/// </summary>
public static string ByteArrayToHexString(byte[] buf)
{
    
int iLen = 0;

    
// 通过反射获取 MachineKeySection 中的 ByteArrayToHexString Ҏ(gu)Q该Ҏ(gu)用于字节数l{换ؓ(f)16q制表示的字W串?/span>
    Type type = typeof(System.Web.Configuration.MachineKeySection);
    MethodInfo byteArrayToHexString 
= type.GetMethod("ByteArrayToHexString", BindingFlags.Static | BindingFlags.NonPublic);

    
// 字节数组转换?6q制表示的字W串
    return (string)byteArrayToHexString.Invoke(nullnew object[] { buf, iLen });
}

    如今“MD5撞生成?#8221;的出玎ͼ?MD5 也正在面临挑战?/p>

    Z介绍一?MD5 工具 Md5CheckerQMd5Checker 是一Ƒօ贏V快速、小巧、易用的文g MD5 D、验证、管理Y件。Md5Checker 的官方网站是Q?font face="Verdana">http://cn.getmd5checker.com/



SkyDream 2012-04-23 17:40 发表评论
]]>
winform怎么比较旉http://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376397.htmlSkyDreamSkyDreamMon, 23 Apr 2012 09:30:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376397.htmlwinform旉比较。例如:(x)当前旉过早上8点就不可在打卡了(jin)。怎么比较的?/span>
DateTime dt1 = DateTime.Now;
DateTime dt2 = Convert.ToDateTime(DateTime.Now.ToShortDateString() + " 08:00:00");
if (DateTime.Compare(dt1, dt2) > 0)
{
    //dt1旉比dt2?
}
else if (DateTime.Compare(dt1, dt2) == 0)
{
    //TODO
}
else
{
    //TODO
}

 

 

数据库里有个l束旉Q?我登录的时候要获取pȝ旉?数据库里的时间做Ҏ(gu)Q没到结束时?可以d  C(jin)׃可以d  

 

winform里比较:(x)
Datetime overTime = 获取数据库结束时_(d)
if(Datetime.Now <= overTime)
{
dQ?
}
else
{
无法dQ?
}

数据库里比较(以mysql举例Q:(x)
select QnowQ)(j) < overTime);
其中nowQ)(j)是系l函数当前时_(d)overtime的话你select一下你的结束时_(d)如果是确定值可以直接用'2012-12-21 00:00:00'q样的Ş?/pre>
 if (Convert.ToDateTime(tiems).CompareTo(Convert.ToDateTime(beoverdate)) < 1)

 

C# winform中怎么时间{换成intcd的数字ƈ且与一个数字进行比较?

string num="1234560";
int a=int.Prase(num);
注意Qnum中只能出现数字且开头不?Q否则会(x)出错 
如果是小数就?
string num1="3.1415926";
float bfloat.prase(num1);

 

int.parse

convert.toint32 
系l时间减?0天之后,格式化ؓ(f)数据库中旉的格?/span>
string dt = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd");

select * from table where 数据库时?> '"+dt+"'

如果能返回记录ؓ(f)0Q说明已l超q?0?br />
DateTime SystemTime = DateTime.Now;  //获得pȝ旉
string str = "2009-8-13 12:00:00";  //str是数据库记录的时?/span>
DateTime DatabaseTime = DateTime.Parse(str);

TimeSpan ts = SystemTime.Subtract(DatabaseTime);  //pȝ旉减去数据库时?/span>

int i = ts.Days;  //间隔的天?/span>

SkyDream 2012-04-23 17:30 发表评论
]]>winform验证textbox只能输入数字或中文正则表辑ּhttp://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376384.htmlSkyDreamSkyDreamMon, 23 Apr 2012 08:01:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376384.html验证数字的正则表辑ּ?/span>
验证数字Q^[0-9]*$
验证n位的数字Q^\d{n}$
验证臛_n位数字:(x)^\d{n,}$
验证m-n位的数字Q^\d{m,n}$
验证零和非零开头的数字Q^(0|[1-9][0-9]*)$
验证有两位小数的正实敎ͼ(x)^[0-9]+(.[0-9]{2})?$
验证?-3位小数的正实敎ͼ(x)^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数Q^\+?[1-9][0-9]*$
验证非零的负整数Q^\-[1-9][0-9]*$
验证非负整数Q正整数 + 0Q:(x)^\d+$
验证非正整数Q负整数 + 0Q:(x) ^((-\d+)|(0+))$

验证中文的正则表辑ּ集合
验证所有东亚区的语aQ^[\?-\?]+$ 
验证体和J体Q^[\一-\?]+$ 
验证体:(x)^[\一-\龥]+$

使用Ҏ(gu)如下
使用Regex对象先引用System.Text.RegularExpressions
string s="^[0-9]*$";//正则表达?br style="line-height: normal" />Regex reg=new Regex(s);
if(!reg.IsMatch(this.textbox1.text))
{        
        MessageBox.Show("误入数?);
}

 

 

各式各样的正则表辑ּ参考大全(讉K正则表达式实例库Q:(x) 
^\d+$  //匚w非负整数Q正整数 + 0Q? 
//匚w整数 ^\d+(\.\d+)?$  //匚w非负点敎ͼ正QҎ(gu) + 0Q?span class="Apple-converted-space"> 
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匚w正QҎ(gu) 
^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匚w非正点敎ͼ负QҎ(gu) + 0Q?span class="Apple-converted-space"> 
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匚w负QҎ(gu) 
^(-?\d+)(\.\d+)?$  //匚w点?span class="Apple-converted-space"> 
^[A-Za-z]+$          //匚w?6个英文字母组成的字符?span class="Apple-converted-space"> 
^[A-Z]+$     //匚w?6个英文字母的大写l成的字W串 
^[a-z]+$  //匚w?6个英文字母的写l成的字W串 
^[A-Za-z0-9]+$  //匚w由数字和26个英文字母组成的字符?span class="Apple-converted-space"> 
^\w+$  //匚w由数字?6个英文字母或者下划线l成的字W串 
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匚wemail地址 
^[a-zA-z]+://匚w(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匚wurl 
匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5] 
匚w双字节字W?包括汉字在内)Q[^\x00-\xff] 
匚wI的正则表辑ּQ\n[\s| ]*\r 
匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/>|<(.*) \/>/ 
匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$) 
匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
匚w|址URL的正则表辑ּQ^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ 
匚w帐号是否合法(字母开_(d)允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
匚w国内?sh)话L(fng)Q?\d{3}-|\d{4}-)?(\d{8}|\d{7})? 
匚w腾讯QQP(x)^[1-9]*[1-9][0-9]*$

下表是元字符?qing)其在正则表辑ּ上下文中的行为的一个完整列表,具体到每个正则表辑ּW号Q?span class="Apple-converted-space"> 
\ 下一个字W标Cؓ(f)一个特D字W、或一个原义字W、或一个后向引用、或一个八q制转义W?span class="Apple-converted-space"> 
^ 匚w输入字符串的开始位|。如果设|了(jin) RegExp 对象的Multiline 属性,^ 也匹?’\n’ ?’\r’ 之后的位|?span class="Apple-converted-space"> 
$ 匚w输入字符串的l束位置。如果设|了(jin) RegExp 对象的Multiline 属性,$ 也匹?’\n’ ?’\r’ 之前的位|?span class="Apple-converted-space"> 
* 匚w前面的子表达式零ơ或多次?span class="Apple-converted-space"> 
+ 匚w前面的子表达式一ơ或多次? {h(hun)?{1,}?span class="Apple-converted-space"> 
? 匚w前面的子表达式零ơ或一ơ? {h(hun)?{0,1}?span class="Apple-converted-space"> 
{n} n 是一个非负整敎ͼ匚w定的n ơ?span class="Apple-converted-space"> 
{n,} n 是一个非负整敎ͼ臛_匚wn ơ?span class="Apple-converted-space"> 
{n,m} m ?n 均ؓ(f)非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。在逗号和两个数之间不能有空根{?span class="Apple-converted-space"> 
? 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦(ch)的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦(ch)的字W串?span class="Apple-converted-space"> 
. 匚w?"\n" 之外的Q何单个字W。要匚w包括 ’\n’ 在内的Q何字W,请用象 ’[.\n]’ 的模式?span class="Apple-converted-space"> 
(pattern) 匚wpattern q获取这一匚w?(?:pattern) 匚wpattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用?(?=pattern) 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_(d)该匹配不需要获取供以后使用?(?!pattern) 负向预查Q与(?=pattern)作用相反 x|y 匚w x ?y?span class="Apple-converted-space"> 
[xyz] 字符集合?span class="Apple-converted-space"> 
[^xyz] 负值字W集合?span class="Apple-converted-space"> 
[a-z] 字符范围Q匹配指定范围内的Q意字W?br style="line-height: normal" />[^a-z] 负值字W范_(d)匚wM不在指定范围内的L字符?span class="Apple-converted-space"> 
\b 匚w一个单词边界,也就是指单词和空格间的位|?span class="Apple-converted-space"> 
\B 匚w非单词边界?span class="Apple-converted-space"> 
\cx 匚w由x指明的控制字W?span class="Apple-converted-space"> 
\d 匚w一个数字字W。等价于 [0-9]?span class="Apple-converted-space"> 
\D 匚w一个非数字字符。等价于 [^0-9]?br style="line-height: normal" /> \f 匚w一个换늬。等价于 \x0c ?\cL?span class="Apple-converted-space"> 
\n 匚w一个换行符。等价于 \x0a ?\cJ?span class="Apple-converted-space"> 
\r 匚w一个回车符。等价于 \x0d ?\cM?span class="Apple-converted-space"> 
\s 匚wMI白字符Q包括空根{制表符、换늬{等。等价于[ \f\n\r\t\v]?span class="Apple-converted-space"> 
\S 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?span class="Apple-converted-space"> 
\t 匚w一个制表符。等价于 \x09 ?\cI?br style="line-height: normal" />\v 匚w一个垂直制表符。等价于 \x0b ?\cK?span class="Apple-converted-space"> 
\w 匚w包括下划U的M单词字符。等价于’[A-Za-z0-9_]’?br style="line-height: normal" />\W 匚wM非单词字W。等价于 ’[^A-Za-z0-9_]’?br style="line-height: normal" />\xn 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ(f)定的两个数字长?span class="Apple-converted-space"> 
\num 匚w numQ其中num是一个正整数。对所获取的匹配的引用?span class="Apple-converted-space"> 
\n 标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?span class="Apple-converted-space"> 
\nm 标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ(f)八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?\nml 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ(f)八进制数?(0-7)Q则匚w?

--------------------------------------------------------------------------------

 


if(document.getElementById("personalemail").value==null || document.getElementById("personalemail").value==""){
     alert("邮箱不能为空");
     return false;
 }else if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById("personalemail").value))){
  alert("误入一个有效的邮g地址");
  document.getElementById("personalemail").value="";
  return false;
 }

    var partten = /^1[3,5]\d{9}$/;
 if(document.getElementById("cellphone").value==null || document.getElementById("cellphone").value==""){
    alert("手机L(fng)不能为空");
    document.getElementById("cellphone").focus();
    return false;
 }else if(isNaN(document.getElementById("cellphone").value) && !partten.test(document.getElementById("cellphone").value)){
     alert("手机L(fng)只能是数?q且只能?3?5开头ƈ且长度是11?);
     document.getElementById("cellphone").focus();
     return false;
 }



SkyDream 2012-04-23 16:01 发表评论
]]>
winform相对路径和绝对\?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376358.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Mon, 23 Apr 2012 05:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376358.html</guid><description><![CDATA[<pre class="reply-text mb10" id="best-answer-content" style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px 0px 10px; word-spacing: 0px; font: 14px/22px Arial; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; zoom: 1; letter-spacing: normal; background-color: rgb(255,252,246); word-wrap: break-word; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">l对路径Q是从盘W开始的路径QŞ? C:\windows\system32\cmd.exe 相对路径Q是从当前\径开始的路径Q假如当前\径ؓ(f)C:\windows 要描qCq\径,只需输入 system32\cmd.exe 实际上,严格的相对\径写法应? .\system32\cmd.exe 其中Q?表示当前路径Q在通道情况下可以省略,只有在特D的情况下不能省略? 假如当前路径为c:\program files 要调用上q命令,则需要输? ..\windows\system32\cmd.exe 其中Q?.为父目录? 当前路径如果为c:\program files\common files 则需要输? ..\..\windows\system32\cmd.exe</pre>winform的默认相对\径是相对?bin文g夹下的debug文g夹的位置<br />例如bin文g夹下的file文g夹的a.mp3文g 的相对\径ؓ(f) file/a.mp3<br />bin文g夹外?file文g夹的a.mp3文g 的相对\径ؓ(f) ../../file/a.mp3 <br /><br /><a style="word-spacing: 0px; font: 20px/30px 'Microsoft YaHei'; text-transform: none; color: rgb(102,102,102); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; text-decoration: none; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" ><span style="color: #3366ff">C# Winform中如何获取文件\?/span></a><br /> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">获取文g名方法:(x)</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">用System.IO.Path.GetFileName和System.IO.Path.GetFileNameWithoutExtensionQ无扩展名)(j)的方?/span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">获取文g路径Ҏ(gu)Q?/span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取当前q程的完整\径,包含文g?q程??/span><span id="more-1957"></span><br /><span style="color: #3366ff">string str = this.GetType().Assembly.Location;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx\xxx.exe (.exe文g所在的目录+.exe文g?</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取新的 Process lgq将其与当前zd的进E关联的L块的完整路径Q包含文件名(q程??/span><br /><span style="color: #3366ff">string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx\xxx.exe (.exe文g所在的目录+.exe文g?</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取和设|当前目录(卌q程从中启动的目录)(j)的完全限定\径?/span><br /><span style="color: #3366ff">string str = System.Environment.CurrentDirectory;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx (.exe文g所在的目录)</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取当前 Thread 的当前应用程序域的基目录Q它q序集冲突解决E序用来探测E序集?/span><br /><span style="color: #3366ff">string str = System.AppDomain.CurrentDomain.BaseDirectory;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx\ (.exe文g所在的目录+”\”)</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取和设|包含该应用E序的目录的名称?/span><br /><span style="color: #3366ff">string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx\ (.exe文g所在的目录+”\”)</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取启动?jin)应用程序的可执行文件的路径Q不包括可执行文件的名称?/span><br /><span style="color: #3366ff">string str = System.Windows.Forms.Application.StartupPath;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx (.exe文g所在的目录)</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取启动?jin)应用程序的可执行文件的路径Q包括可执行文g的名U?/span><br /><span style="color: #3366ff">string str = System.Windows.Forms.Application.ExecutablePath;</span><br /><span style="color: #3366ff">result: X:\xxx\xxx\xxx.exe (.exe文g所在的目录+.exe文g?</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">//获取应用E序的当前工作目?不可??/span><br /><span style="color: #3366ff">string str = System.IO.Directory.GetCurrentDirectory();</span><br /><span style="color: #3366ff">result: X:\xxx\xxx (.exe文g所在的目录)</span><br /><br /><a style="word-spacing: 0px; font: 20px/30px 'Microsoft YaHei'; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; text-decoration: none; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" ><span style="color: #3366ff">C# 获取路径中,文g名、目录、扩展名{?/span></a><br /><br /></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">string path = "C:\\dir1\\dir2\\foo.txt";</span><br /><span style="color: #3366ff">string str = "GetFullPathQ? + Path.GetFullPath(path) + "\r\n";</span><br /><span style="color: #3366ff">str += "GetDirectoryNameQ? + Path.GetDirectoryName(path) + "\r\n";</span><br /><span style="color: #3366ff">str += "GetFileNameQ? + Path.GetFileName(path) + "\r\n";</span><br /><span style="color: #3366ff">str += "GetFileNameWithoutExtensionQ? + Path.GetFileNameWithoutExtension(path) + "\r\n";</span><br /><span style="color: #3366ff">str += "GetExtensionQ? + Path.GetExtension(path) + "\r\n";</span><br /><span style="color: #3366ff">str += "GetPathRootQ? + Path.GetPathRoot(path) + "\r\n";</span><br /><span style="color: #3366ff">MessageBox.Show(str);</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">l果Q?/span><span id="wmqeeuq" class="Apple-converted-space"> <br /></span><span style="color: #3366ff">GetFullPathQC:\dir1\dir2\foo.txt</span><br /><span style="color: #3366ff">GetDirectoryNameQC:\dir1\dir2</span><br /><span style="color: #3366ff">GetFileNameQfoo.txt</span><br /><span style="color: #3366ff">GetFileNameWithoutExtensionQfoo</span><br /><span style="color: #3366ff">GetExtensionQ?txt</span><br /><span style="color: #3366ff">GetPathRootQC:\</span></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"></p> <p style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="color: #3366ff">q里要说?path ?/span><a style="color: rgb(51,102,153); text-decoration: none" ><span style="color: #3366ff">如何</span></a><a style="color: rgb(51,102,153); text-decoration: none" ><img style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none" alt="C# L获取路径中文件名、目录、扩展名{? src="http://www.js4j.com/www.js4j.com.gif" border="0" /></a><span style="color: #3366ff">判断目录和文件名的:(x)它把最后一?\ 后面的内容当作是文g名?/span><span id="wmqeeuq" class="Apple-converted-space"> </span><span style="color: #3366ff">// 内容来自js4j.com//</span></p> <ul style="word-spacing: 0px; font: 14px/26px Arial; text-transform: none; color: rgb(51,51,51); text-indent: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><li><span style="color: #3366ff">C:\dir1\dir2\foo.txt 文g名是 foo.txtQ目录名?C:\dir1\dir2?/span></li><li><span style="color: #3366ff">C:\dir1\dir2\ 文g名是雉度字W串Q目录名?C:\dir1\dir2?/span></li><li><span style="color: #3366ff">C:\dir1\dir2 文g名是 dir2Q目录名?C:\dir1?/span></li></ul><img src ="http://www.aygfsteel.com/AndyZhang/aggbug/376358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2012-04-23 13:39 <a href="http://www.aygfsteel.com/AndyZhang/archive/2012/04/23/376358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.NET性能分析最?jng)_践之Q如何找Z用过多内存的.NET代码Q进阶篇Q?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2012/04/18/375149.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Wed, 18 Apr 2012 09:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2012/04/18/375149.html</guid><description><![CDATA[<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">通过<a style="color: rgb(246,98,9); text-decoration: none" target="_blank">上一?/a>文章一些截图,怿朋友们已l基本知道了(jin)Profiler的用方法,现在Q如何程序中的方法很多,例如2000个,那么通过上面的方法来查看q当的痛苦?jin)。怎么办呢Q?/span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">一个比较不错的Ҏ(gu)是信息导出成为报表的信息Q然后在excel中进行分析。操作方法如下:(x)</span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" alt="20120409212740.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=250" width="550" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">一旦上面的按钮点击之后Q所有的调用?wi)就会(x)被昄出来Q还没有信息保存(sh)ؓ(f)csv格式Q如下:(x)</span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="409" alt="20120409212810.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=251" width="665" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">保存?sh)Z(jin)csv之后Q我们通过excel打开Q就可以q行分析?jin),如下Q?/span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" alt="20120409212854.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=252" width="550" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">       除了(jin)采用上面的方法用Profiler之外Q我们还可以在代码中使用Profiler的功能。如果我们知道了(jin)哪些Ҏ(gu)需要跟t,我们可以在代码中开启Profiler?/span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"> </p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">首先Q我们要在自q目中引?#8220;CLRProfilerControl.dll”Q然后可以写如下的代码:(x)</span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" alt="20120409212940.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=253" width="550" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">       q样写完之后呢,我们可以运行profiler来启动我们的E序。这里要注意Q我们必ȝ?#8220;profile active”Q因为我们已l运行我们的代码q行profiler的检查跟t功能,如下Q?/span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="302" alt="20120409213130.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=254" width="640" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">此时Q如果我们查?#8220;histogram”Q就?x)发现数据非常的,如下Q?/span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="20120409213147.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=255" width="602" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">       如果我们查看“allocation graphQ内存分配图Q?#8221;Q此Ӟ我们׃(x)看到一个非常干净的界面了(jin)。和之前一P我们q是要点?#8220;everything”来看所有的Ҏ(gu)的占用的内存Q如下:(x)</span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium"> </span></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><a style="color: rgb(246,98,9); text-decoration: none" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="20120409213215.png" src="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=256" width="590" /></a></p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"> </p> <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 14px/25px Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span style="font-size: medium">到这里,Profiler的用就介绍完了(jin)Q我们ȝ一下吧Q?/span></p> <ol style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px 0px 1.5em; word-spacing: 0px; font: 14px/1.4em Helvetica, Tahoma, Arial, sans-serif; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); text-align: left; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><li style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0.25em 30px; padding-top: 0px">  <ol style="padding-right: 0px; padding-left: 40px; font-size: 1em; padding-bottom: 0px; margin: 1em 0px; line-height: 1.4em; padding-top: 0px"><li style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 0px; margin: 0px; line-height: 1.5; padding-top: 0px"><strong style="font-weight: bold"><span style="font-size: medium">Profiler可以用找出类Q方法以?qing)程序集占用内存的情c(din)?/span></strong></li><li style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 0px; margin: 0px; line-height: 1.5; padding-top: 0px"><strong style="font-weight: bold"><span style="font-size: medium">不能用在已经q行的上U环境中?/span></strong></li><li style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 0px; margin: 0px; line-height: 1.5; padding-top: 0px"><strong style="font-weight: bold"><span style="font-size: medium">我们可以使用histogram查看内存的分配情况,通过call graph查看每个Ҏ(gu)占用的内存?/span></strong></li><li style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 0px; margin: 0px; line-height: 1.5; padding-top: 0px"><strong style="font-weight: bold"><span style="font-size: medium">我们可以通过代码的方式更加有针对性的Ҏ(gu)些方法进行查看?/span></strong></li></ol></li></ol><img src ="http://www.aygfsteel.com/AndyZhang/aggbug/375149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2012-04-18 17:35 <a href="http://www.aygfsteel.com/AndyZhang/archive/2012/04/18/375149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.NET性能分析最?jng)_践之Q如何找Z用过多内存的.NET代码Q基)(j)http://www.aygfsteel.com/AndyZhang/archive/2012/04/18/375147.htmlSkyDreamSkyDreamWed, 18 Apr 2012 09:27:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/18/375147.html?NET应用中一个常常媄(jing)响性能的因素就是代码消耗了(jin)q多的内存。很多的开发h员在~写代码的过E中常常不会(x)x性能Q从而得应用程序中到处存在性能瓉。很多的时候,开发h员关注的L代码的执行时间的长短Q而把真正的性能问题?sh)掉了(jin)一辏V在本篇文章中,我们会(x)扑և代码中的哪些功能消耗了(jin)多少内存?/span>

              

本篇文章比较单,我们?x)主要详l的介绍CLR Profilerq个工具?/span>

 

基础:(x)详解介绍Profiler的?/span>

       大家可以从这里从微Y?/span>站点下蝲CLR Profiler。一旦下载CLR Profiler之后Q我们就可以解压Q然后运行Bin文g夹中?#8220;CLRProfiler.exe”?/span>

首先我们来介l一下CLR Profiler的功能?/span>

 

       CLR Profiler实是一个不错的工具Q通过使用它,我们可以?jin)解一?NET应用E序到底是如何用内存的Q基本上面它的功能可以分Zc?如图所C:(x)

 

20120409210650.png

 

1. 对一?NET应用中的内存是如何分配的l出一个完整的描述。所以,我们可以看到每一U类型,Ҏ(gu)所占用的内存情c(din)?/span>

2. 它告诉我们一个方法被调用?jin)多次?/span>

 

       q里需要注意的是Q不要再生环境或上面的服务器站点中q行CLR ProfilerQ因为它?x)严重的影响E序的媄(jing)响。例如,如果我们的应用程序中包含两个Ҏ(gu)Qfun1和fun2Q此时当我们q行CLR Profiler的时候,它会(x)一些逻辑注入到应用程序中Q通过下面的一个图可以很清楚的看?gu)个问题?x)

 

20120409210755.png

 

 

说了(jin)q么多,我们q是来看看,如何使用CLR Profiler?/span>

 

       首先Q在使用CLR Profiler之前Q我们要清楚Q要使用q个工具来干嘛?基本上,有两点理由:(x)查看内存的分配与使用的情况;查看Ҏ(gu)被调用次数?/span>

启动?jin)CRLProfiler.exe之后Q选择要检查的E序Q如下图Q?/span>

 

20120409210842.png

 

 

此时Q应用程序就开始运行,我们可以在Profiler中看C些信息,例如应用E序占用的内容,每一代对象占用的大小{,如下Q?/span>

 20120409210929.png

 

 

       其实上面的那个应用程序非常的单,只是作ؓ(f)一个demo演示而言。上面的E序的功能就是在一个按钮的事g中调用了(jin)两个Ҏ(gu)Q?strong style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; padding-top: 0px">UseSimpleStrings?strong style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; padding-top: 0px">UseStringBuilders。这个两个方法都是在拼接字符Ԍq也是常常被用来做例子的一个场景)(j)Q我们分别让它们拼接1000个字W串Q如下:(x)

 

20120409211022.png

 

 

其中UseSimpleStrings如下Q?/span>

 

20120409211053.png

 

UseStringBuilders如下Q?/span>

 

20120409211127.png

       现在Q我们可以尝试着使用Profilerȝ看每个方法用多的内存。我们在E序中点?yn)L钮,好让ProfilerL集信息。然后,我们在点击Profiler?#8220;histogram”按钮Q此时我们就可以看到E序中的每一U类型的内存占用情况Q如下:(x)

 

20120409211321.png

 

如果我们想看每一个方法在q行q程中占用的内容Q可以点?#8220;Allocation Graph”Q如下:(x)

 

20120409211413.png

 

通过q个操作Q我们可以看C面的图:(x)

 

20120409211458.png

 

       乍一看,可能感觉界面非常的؜乱,特别是在应用E序很大的时候。ؓ(f)?jin)更加看到我们想看的?gu)Q我们可以通过在界面的中点d键,点击“Find Routine”Q然后选择输入qo(h)的条Ӟ如下Q?/span>

 

20120409211523.png

 

q样可以快速的定位Q如下:(x)

 

20120409211559.png

 

然后在方法上面双击,p一步的展开Q查看细节,如下Q?/span>

 

20120409211642.png

 

       在上图中Q我们只是看C(jin)“UseSimpleStrings”Ҏ(gu)的用内存的情况Q因个界面显C的信息比较的粗p,只是把一些内存(sh)用比较多的方法列出来?jin),我们可以通过点击“0(everything)”查看所以的Ҏ(gu)Q此时看到如下:(x)

 

20120409211717.png

 

通过上面的图Q我们一目了(jin)然的直到内存的用情?/span>



SkyDream 2012-04-18 17:27 发表评论
]]>
l典SQL语句大全http://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374867.htmlSkyDreamSkyDreamTue, 17 Apr 2012 03:00:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374867.html阅读全文

SkyDream 2012-04-17 11:00 发表评论
]]>
վ֩ģ壺 | | | | ػ| ̨| ֳ| ¡| | | | ɽ| ƽ| ʩ| | ͨ| ԭ| | ޶| | | ¡| | | ɽ| ؼ| | | | | | ̨| ƽ| | | | Ƥ| | | Ǽ| IJ|