??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲AV天海翼,在线观看日本亚洲一区,浮力影院亚洲国产第一页http://m.tkk7.com/zgghc/category/14088.html天冷 冷不了我的心 心痛 痛不断我的情 情深 深得像v ?仰望蓝天 ?一轮明? ?为我而牧 zh-cnMon, 21 May 2007 13:32:48 GMTMon, 21 May 2007 13:32:48 GMT60用C#的类实现数据l构的堆栈算?/title><link>http://m.tkk7.com/zgghc/articles/118903.html</link><dc:creator>牧月?/dc:creator><author>牧月?/author><pubDate>Mon, 21 May 2007 07:53:00 GMT</pubDate><guid>http://m.tkk7.com/zgghc/articles/118903.html</guid><wfw:comment>http://m.tkk7.com/zgghc/comments/118903.html</wfw:comment><comments>http://m.tkk7.com/zgghc/articles/118903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zgghc/comments/commentRss/118903.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zgghc/services/trackbacks/118903.html</trackback:ping><description><![CDATA[using System; <br />namespace DataStructure <br />{ <br />/// <summary> <br />/// Class1 的摘要说明?<br />/// </summary> <br />public class Stack//栈类 <br />{ <br />private int count=0; <br />private Node first=null;//定义首结?<br />public bool Empty <br />{ <br />get <br />{ <br />return(first==null); <br />} <br />} <br />public int Count <br />{ <br />get <br />{ <br />return count; <br />} <br />} <br />public object Pop()//入栈 <br />{ <br />if(first==null) <br />{ <br />throw new InvalidOperationException("Can not pop from an empty stack;"); <br />} <br />else <br />{ <br />object temp=first.Value; <br />first=first.Next; <br />count--; <br />return temp; <br />} <br />} <br />public void push(object o)//出栈 <br />{ <br />first=new Node(o,first); <br />count++; <br />} <br />public Stack() <br />{ <br />// <br />// TODO: 在此处添加构造函数逻辑 <br />// <br />} <br />} <br />class Node //l点c?<br />{ <br />public Node Next; <br />public object Value; <br />public Node(object value):this(value,null){} <br />public Node(object value,Node next) <br />{ <br />Next=next; <br />Value=value; <br />} <br />} <br />}<img src ="http://m.tkk7.com/zgghc/aggbug/118903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zgghc/" target="_blank">牧月?/a> 2007-05-21 15:53 <a href="http://m.tkk7.com/zgghc/articles/118903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# 数据l构排序http://m.tkk7.com/zgghc/articles/118899.html牧月?/dc:creator>牧月?/author>Mon, 21 May 2007 07:50:00 GMThttp://m.tkk7.com/zgghc/articles/118899.htmlhttp://m.tkk7.com/zgghc/comments/118899.htmlhttp://m.tkk7.com/zgghc/articles/118899.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/118899.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/118899.html////冒排序
//using System;
//namespace BubbleSorter
//{
// public class BubbleSorter
// {
//  public void Sort(int[] list)
//  {
//   int i,j,temp;
//   bool done=false;
//   j = 1;
//   while((j<list.Length)&&(!done))
//   {
//    done=true;
//    for(i=0;i<list.Length-j;i++)
//    {
//     if(list[i] > list[i+1])
//     {
//      done=false;
//      temp=list[i];
//      list[i]=list[i+1];
//      list[i+1]=temp;
//     }
//    }
//    j++;
//   }
//
//  }
// }
// public class MainClass
// {
//  public static void Main()
//  {
//   int[] iArrary=new int[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47};
//   BubbleSorter sh=new BubbleSorter();
//   sh.Sort(iArrary);
//   for(int m=0;m<iArrary.Length;m++)
//   Console.Write("{0} ",iArrary[m]);
//   Console.WriteLine();
//  }
// }
//}

////选择排序
//using System;
//
//namespace SelectionSorter{
// public class SelectionSorter{
//  private int min;
//  public void Sort(int[] sort){
//   for(int i = 0;i < sort.Length -1;i++){
//    min = i;
//    for(int j = i + 1;j < sort.Length;j++){
//     if(sort[j] < sort[min]){
//      min = j;
//     }
//     int t = sort[min];
//     sort[min] = sort[i];
//     sort[i] = t;
//    }
//   }
//  }
//  
// }
// public class MainClass{
//  public static void Main(){
//   int[] iArray = new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47};
//   SelectionSorter ss = new SelectionSorter();
//   ss.Sort(iArray);
//   for(int m =0;m < iArray.Length;m++)
//    Console.Write(iArray[m] + " ");
//   Console.Read();
//    
//  }
// }
//}
//
////插入排序
//using System;
//namespace hc{
// public class InsertSort{
//  public void sort(int[] list){
//   for(int i = 1;i < list.Length;i++){
//    int t = list[i];
//    int j = i;
//    while((j > 0)&&(list[j-1] > t)){
//     list[j] = list[j-1];
//     --j;
//    }
//    list[j] = t;
//   }
//  }
// }
// public class MainClass{
//  public static void Main(){
//   int[] iArrary=new int[]{1,13,3,6,10,55,98,2,87,12,34,75,33,47};
//   InsertSort sort1 = new InsertSort();
//   sort1.sort(iArrary);
//   for(int m = 0;m < iArrary.Length;m++){
//    Console.WriteLine(iArrary[m]);
//   }
//  }
// }
//}

////希尔排序,希尔排序是将l分D?q行插入排序.
//using System;
//namespace hc{
// public class ShellSort{
//  public void Sort(int[] list){
//   int i;
//   for(i = 0; i <= list.Length/9;i=3*i+1);
//    for(;i > 0;i/=3)
//    {  for(int j = i + 1;j <= list.Length;j+=i){
//      int t = list[j-1];
//      int m = j;
//      while((m > i)&&(list[m-i-1] > t)){
//       list[m-1] = list[m-i-1];
//       m -=i;
//      }
//      list[m-1] = t;
//     }
//    }
//  }
//  
// }
// public class MainClass{
//  
//  public static void Main()
//  {
//   int[] iArrary=new int[]{1,13,3,6,10,55,98,2,87,12,34,75,33,47};
//   ShellSort sr = new ShellSort();
//   sr.Sort(iArrary);
//   for(int i =0;i < iArrary.Length;i++)
//    Console.WriteLine(iArrary[i]);
//   Console.Read();
//  }
// }
//}

////八皇后问?br />//using System;
//namespace hc{
// class Queen
// {
//  const int SIZE = 8;//皇后?br />//  public static void Main()
//  {
//   int[] Queen = new int [SIZE];//每行皇后的位|?br />//   int y,x,i,j,d,t=0;
//   y = 0;
//   Queen[0] = -1;
//   while( true )
//   {
//    for (x=Queen[y]+1; x<SIZE; x++)
//    {
//     for (i=0;i<y;i++)
//     {
//      j = Queen[i];
//      d = y-i;
//      //查新皇后是否与以前的皇后能相互攻?br />//      if ((j==x)||(j==x-d)||(j==x+d))
//       break;
//     }
//     if (i>=y)
//      break;//不攻?br />//    }
//    if (x == SIZE) //没有合适的位置
//    {
//     if (0==y)
//     {
//      //回朔CW一?br />//      Console.WriteLine("Done");
//      break; //l束
//     }
//     //回朔
//     Queen[y]=-1;
//     y--;
//    }
//    else
//    {
//     Queen[y]=x;//定皇后的位|?br />//     y++;//下一个皇?br />//     if (y<SIZE)
//      Queen[y]=-1;
//     else
//     {
//      //所有的皇后都排完了Q输?br />//      Console.WriteLine("\n" + ++t +':');
//      for(i=0;i<SIZE;i++)
//      {
//       for (j=0;j<SIZE;j++)
//        if(Queen[i] == j)
//         Console.Write('Q');
//        else
//         Console.Write('.');
//       Console.WriteLine();
//      }
//      y = SIZE -1;//回朔
//     }
//    }
//   }
//   Console.Read();
//  }
// }
//
//}
//
////快速排?br />//using System;  
//namespace QuickSorter
//{
// public class QuickSorter
// {
//  private void Swap(ref int l,ref int r)
//  {
//   int s;
//   s=l;
//   l=r;
//   r=s;
//  }
//  public void Sort(int [] list,int low,int high)
//  {
//   int pivot;
//   int l,r;
//   int mid;
//   if(high<=low)
//    return;
//   else if(high==low+1)
//   {
//    if(list[low]>list[high])
//     Swap(ref list[low],ref list[high]);
//    return;
//   }
//   mid=(low+high)>>1;
//   pivot=list[mid];
//   Swap(ref list[low],ref list[mid]);
//   l=low+1;
//   r=high;
//   do
//   {
//   while(l<=r&&list[l]<pivot)
//    l++;
//   while(list[r]>=pivot)
//    r--;
//    if(l<r)
//     Swap(ref list[l],ref list[r]);
//   }while(l<r);
//   list[low]=list[r];
//   list[r]=pivot;
//   if(low+1<r)
//    Sort(list,low,r-1);
//   if(r+1<high)
//    Sort(list,r+1,high);
//  }
// }
// public class MainClass
// {
//  public static void Main()
//  {
//   int[] iArrary=new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47};
//   QuickSorter q=new QuickSorter();
//   q.Sort(iArrary,0,13);
//   for(int m=0;m<=13;m++)
//    Console.WriteLine("{0}",iArrary[m]);
//  }
// }
//  
//}


 



]]>
P2P聊天E序http://m.tkk7.com/zgghc/articles/118895.html牧月?/dc:creator>牧月?/author>Mon, 21 May 2007 07:46:00 GMThttp://m.tkk7.com/zgghc/articles/118895.htmlhttp://m.tkk7.com/zgghc/comments/118895.htmlhttp://m.tkk7.com/zgghc/articles/118895.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/118895.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/118895.htmlusing System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;
using System.Net.Sockets;
using System.IO;
using System.Net;

namespace Socket
{
 /// <summary>
 /// Form1 的摘要说明?br /> /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.Button button1;
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.Label label2;
  private System.Windows.Forms.TextBox textBox1;
  private System.Windows.Forms.TextBox textBox2;
  //声明监听U程对象
  private Thread MyListenThread;
  //声明|络监听对象
  private TcpListener MyTcpListener;
  private System.Windows.Forms.RichTextBox richTextBox1;
  private System.Windows.Forms.RichTextBox richTextBox2;
  private System.Windows.Forms.Label label3;
  private System.Windows.Forms.Label label5;
  private System.Windows.Forms.Button button2;
  private System.Windows.Forms.PictureBox pictureBox1;
  private System.Windows.Forms.OpenFileDialog openFileDialog1;
  private System.Windows.Forms.ContextMenu contextMenu1;
  private System.Windows.Forms.MenuItem menuItem1;
  private System.Windows.Forms.MenuItem menuItem2;
  private System.Windows.Forms.MenuItem menuItem3;
  /// <summary>
  /// 必需的设计器变量?br />  /// </summary>
  private System.ComponentModel.Container components = null;

  public Form1()
  {
   //
   // Windows H体设计器支持所必需?br />   //
   InitializeComponent();

   //
   // TODO: ?InitializeComponent 调用后添加Q何构造函C?br />   //
  }

  /// <summary>
  /// 清理所有正在用的资源?br />  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region Windows H体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方?- 不要使用代码~辑器修?br />  /// 此方法的内容?br />  /// </summary>
  private void InitializeComponent()
  {
   System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
   this.button1 = new System.Windows.Forms.Button();
   this.label1 = new System.Windows.Forms.Label();
   this.label2 = new System.Windows.Forms.Label();
   this.textBox1 = new System.Windows.Forms.TextBox();
   this.textBox2 = new System.Windows.Forms.TextBox();
   this.richTextBox1 = new System.Windows.Forms.RichTextBox();
   this.richTextBox2 = new System.Windows.Forms.RichTextBox();
   this.label3 = new System.Windows.Forms.Label();
   this.label5 = new System.Windows.Forms.Label();
   this.button2 = new System.Windows.Forms.Button();
   this.pictureBox1 = new System.Windows.Forms.PictureBox();
   this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
   this.contextMenu1 = new System.Windows.Forms.ContextMenu();
   this.menuItem1 = new System.Windows.Forms.MenuItem();
   this.menuItem2 = new System.Windows.Forms.MenuItem();
   this.menuItem3 = new System.Windows.Forms.MenuItem();
   this.SuspendLayout();
   //
   // button1
   //
   this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
   this.button1.ForeColor = System.Drawing.SystemColors.Menu;
   this.button1.Location = new System.Drawing.Point(336, 432);
   this.button1.Name = "button1";
   this.button1.Size = new System.Drawing.Size(96, 32);
   this.button1.TabIndex = 0;
   this.button1.Text = "发?;
   this.button1.Click += new System.EventHandler(this.button1_Click);
   //
   // label1
   //
   this.label1.AutoSize = true;
   this.label1.ForeColor = System.Drawing.SystemColors.Menu;
   this.label1.Location = new System.Drawing.Point(88, 16);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(66, 17);
   this.label1.TabIndex = 1;
   this.label1.Text = "q程L?;
   this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
   //
   // label2
   //
   this.label2.AutoSize = true;
   this.label2.ForeColor = System.Drawing.SystemColors.Menu;
   this.label2.Location = new System.Drawing.Point(280, 16);
   this.label2.Name = "label2";
   this.label2.Size = new System.Drawing.Size(42, 17);
   this.label2.TabIndex = 2;
   this.label2.Text = "本机?;
   this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
   //
   // textBox1
   //
   this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
   this.textBox1.Location = new System.Drawing.Point(152, 16);
   this.textBox1.Name = "textBox1";
   this.textBox1.Size = new System.Drawing.Size(104, 21);
   this.textBox1.TabIndex = 3;
   this.textBox1.Text = "";
   //
   // textBox2
   //
   this.textBox2.Anchor = System.Windows.Forms.AnchorStyles.None;
   this.textBox2.BackColor = System.Drawing.SystemColors.Desktop;
   this.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None;
   this.textBox2.Font = new System.Drawing.Font("Times New Roman", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
   this.textBox2.ForeColor = System.Drawing.SystemColors.Menu;
   this.textBox2.Location = new System.Drawing.Point(325, 16);
   this.textBox2.Name = "textBox2";
   this.textBox2.Size = new System.Drawing.Size(104, 19);
   this.textBox2.TabIndex = 4;
   this.textBox2.Text = "";
   this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
   //
   // richTextBox1
   //
   this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
   this.richTextBox1.ContextMenu = this.contextMenu1;
   this.richTextBox1.Location = new System.Drawing.Point(8, 368);
   this.richTextBox1.Name = "richTextBox1";
   this.richTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;
   this.richTextBox1.Size = new System.Drawing.Size(312, 96);
   this.richTextBox1.TabIndex = 5;
   this.richTextBox1.Text = "";
   this.richTextBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.richTextBox1_KeyDown);
   this.richTextBox1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.richTextBox1_KeyUp);
   //
   // richTextBox2
   //
   this.richTextBox2.BackColor = System.Drawing.SystemColors.InactiveCaptionText;
   this.richTextBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
   this.richTextBox2.Location = new System.Drawing.Point(8, 48);
   this.richTextBox2.Name = "richTextBox2";
   this.richTextBox2.Size = new System.Drawing.Size(312, 280);
   this.richTextBox2.TabIndex = 6;
   this.richTextBox2.Text = "";
   //
   // label3
   //
   this.label3.ForeColor = System.Drawing.SystemColors.Menu;
   this.label3.Location = new System.Drawing.Point(8, 336);
   this.label3.Name = "label3";
   this.label3.Size = new System.Drawing.Size(96, 24);
   this.label3.TabIndex = 8;
   this.label3.Text = "要发送的内容";
   this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
   //
   // label5
   //
   this.label5.AllowDrop = true;
   this.label5.AutoSize = true;
   this.label5.ForeColor = System.Drawing.SystemColors.Menu;
   this.label5.Location = new System.Drawing.Point(8, 16);
   this.label5.Name = "label5";
   this.label5.Size = new System.Drawing.Size(42, 17);
   this.label5.TabIndex = 10;
   this.label5.Text = "收发Q?;
   this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
   //
   // button2
   //
   this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
   this.button2.ForeColor = System.Drawing.SystemColors.Menu;
   this.button2.Location = new System.Drawing.Point(256, 336);
   this.button2.Name = "button2";
   this.button2.Size = new System.Drawing.Size(64, 24);
   this.button2.TabIndex = 11;
   this.button2.Text = "览囄";
   this.button2.Visible = false;
   this.button2.Click += new System.EventHandler(this.button2_Click);
   //
   // pictureBox1
   //
   this.pictureBox1.BackColor = System.Drawing.SystemColors.Control;
   this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
   this.pictureBox1.Location = new System.Drawing.Point(323, 48);
   this.pictureBox1.Name = "pictureBox1";
   this.pictureBox1.Size = new System.Drawing.Size(125, 152);
   this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
   this.pictureBox1.TabIndex = 12;
   this.pictureBox1.TabStop = false;
   this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
   this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick);
   this.pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);
   //
   // openFileDialog1
   //
   this.openFileDialog1.Filter = "All file(*.*)|*.*";
   //
   // contextMenu1
   //
   this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                       this.menuItem1,
                       this.menuItem2,
                       this.menuItem3});
   //
   // menuItem1
   //
   this.menuItem1.Index = 0;
   this.menuItem1.Text = "复制(&C)";
   this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
   //
   // menuItem2
   //
   this.menuItem2.Index = 1;
   this.menuItem2.Text = "_脓(&P)";
   this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
   //
   // menuItem3
   //
   this.menuItem3.Index = 2;
   this.menuItem3.Text = "剪切(&T)";
   this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click);
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.BackColor = System.Drawing.SystemColors.Desktop;
   this.ClientSize = new System.Drawing.Size(450, 470);
   this.Controls.Add(this.pictureBox1);
   this.Controls.Add(this.button2);
   this.Controls.Add(this.label5);
   this.Controls.Add(this.label3);
   this.Controls.Add(this.richTextBox2);
   this.Controls.Add(this.richTextBox1);
   this.Controls.Add(this.textBox2);
   this.Controls.Add(this.textBox1);
   this.Controls.Add(this.label2);
   this.Controls.Add(this.label1);
   this.Controls.Add(this.button1);
   this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
   this.KeyPreview = true;
   this.MaximizeBox = false;
   this.Name = "Form1";
   this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
   this.Text = "QQ-ZGG";
   this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
   this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);
   this.Load += new System.EventHandler(this.Form1_Load);
   this.Closed += new System.EventHandler(this.Form1_Closed);
   this.ResumeLayout(false);

  }
  #endregion

  /// <summary>
  /// 应用E序的主入口炏V?br />  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }

  private void button1_Click(object sender, System.EventArgs e)
  {
   try
   {
    System.Net.IPHostEntry ss = Dns.GetHostByAddress(textBox1.Text);
    label5.Text = ss.HostName.ToString();
   }
   catch(Exception er){
    MessageBox.Show("没有扑ֈ该主机名Q?);
   }
   if(textBox1.Text.Length < 1 || textBox2.Text.Length < 1 || richTextBox1.Text.Trim().Length < 1){
    return;
   }
   try{
 
//    richTextBox1.Text = richTextBox1.Text.Substring(0,richTextBox1.TextLength - "\n".Length);
    string MyMessage = textBox2.Text + ":" + richTextBox1.Text + "\n";
    //Ҏ目标计算机地址建立q接
    TcpClient MyTcpClient = new TcpClient(textBox1.Text,888);

//    System.Net.Sockets.UdpClient MyUdpClient = new UdpClient(textBox1.Text,888);
    //获得用网l访问数据流
    NetworkStream MyTcpStream = MyTcpClient.GetStream();
    StreamWriter MyStream = new StreamWriter(MyTcpStream);
    //字W串写入?br />    MyStream.Write(MyMessage);
    //缓冲数据写入基?br />    MyStream.Flush();
    //关闭|络?br />    MyStream.Close();
    MyTcpClient.Close();
    richTextBox2.ReadOnly = false;
    richTextBox2.AppendText(textBox2.Text + ":"  + "\n" + richTextBox1.Text + "\n");
    richTextBox2.ReadOnly = true;
    richTextBox1.Clear();
    richTextBox1.Focus(); // 得到焦点
    
   }
   catch(Exception err){
    MessageBox.Show(err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
   }
  }
  private void Key_Click(){
   if(textBox1.Text.Length < 1 || textBox2.Text.Length < 1 || richTextBox1.Text.Trim().Length < 1)
   {
    return;
   }
   try
   {

    richTextBox1.Text = richTextBox1.Text.Substring(0,richTextBox1.TextLength - "\n".Length);
    string MyMessage = textBox2.Text + ":" + richTextBox1.Text + "\n";
    //Ҏ目标计算机地址建立q接
    TcpClient MyTcpClient = new TcpClient(textBox1.Text,888);

    //    System.Net.Sockets.UdpClient MyUdpClient = new UdpClient(textBox1.Text,888);
    //获得用网l访问数据流
    NetworkStream MyTcpStream = MyTcpClient.GetStream();
    StreamWriter MyStream = new StreamWriter(MyTcpStream);
    //字W串写入?br />    MyStream.Write(MyMessage);
    //缓冲数据写入基?br />    MyStream.Flush();
    //关闭|络?br />    MyStream.Close();
    MyTcpClient.Close();
    richTextBox2.ReadOnly = false;
    richTextBox2.AppendText(textBox2.Text + ":"  + "\n" + richTextBox1.Text + "\n");
    richTextBox2.ReadOnly = true;
    richTextBox1.Clear();
    richTextBox1.Focus(); // 得到焦点
    
   }
   catch(Exception err)
   {
    MessageBox.Show(err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
   }
  }

  private void StartListen(){
   try
   {
    MyTcpListener = new TcpListener(888);

    //开始监?br />    MyTcpListener.Start();
    while(true)
    {
     //获取TcpClient
     TcpClient MyTcpClient = MyTcpListener.AcceptTcpClient();
 //    Socket s = MyTcpListener.AcceptSocket();
     NetworkStream MyStream = MyTcpClient.GetStream();
     Byte[] MyBytes = new Byte[1024];
     int MyByteRead = MyStream.Read(MyBytes,0,MyBytes.Length);
     string MyMessage = System.Text.Encoding.UTF8.GetString(MyBytes,0,MyByteRead);
     textBox1.Text = MyMessage.Substring(0,MyMessage.LastIndexOf(":"));
     this.Text = "QQ-ZGG:" + "来自" + textBox1.Text + "的呼叫!";
     richTextBox2.ReadOnly = false;
     richTextBox2.Text += MyMessage;
     richTextBox2.ReadOnly = true;
           
       }
   }
   catch(Exception err){
    Console.WriteLine(err.Message);
   }

    
  }

  private void Form1_Load(object sender, System.EventArgs e)
  {
   //开始监?br />   //创徏监听U程
   
   string LocalHost = Dns.GetHostName();
   
   textBox2.Text = LocalHost;
   textBox2.ReadOnly = true;
   MyListenThread = new Thread(new ThreadStart(StartListen));
   //启动U程
   MyListenThread.Start();

  }

  private void Form1_Closed(object sender, System.EventArgs e)
  {
   try
   {
    if(MyTcpListener!=null){
     //关闭监听?br />     MyTcpListener.Stop();
    }
    if(MyListenThread != null){
     if(MyListenThread.ThreadState == ThreadState.Running)
     {
      MyListenThread.Abort();
     }
    }
   }
   catch(Exception err){
    MessageBox.Show(err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
   }
  }

  private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  {
   
  }

  private void richTextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
  {//使用快捷l合?br />   
  }

  private void button2_Click(object sender, System.EventArgs e)
  {
    if(openFileDialog1.ShowDialog() == DialogResult.OK)
     pictureBox1.Image = System.Drawing.Bitmap.FromFile(openFileDialog1.FileName);
  }

  private void richTextBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
  {
   if(e.Control == true)
   { 
    switch (e.KeyCode)
    {
      
     case Keys.Enter:
//      richTextBox1.Text = richTextBox1.Text + "\n";
      Key_Click();
      
      break;
     default: break;
    }
    
   }
  }

  private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  {
   
  }

  private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  {
   
  }

  private void pictureBox1_Click(object sender, System.EventArgs e)
  {
   
  }

  private void pictureBox1_DoubleClick(object sender, System.EventArgs e)
  {
//   if(button2.Visible == false)
//    button2.Visible = true;
//   else
//    button2.Visible = false;
   button2_Click(sender,e);
  }

  private void menuItem1_Click(object sender, System.EventArgs e)
  {
   //copy
   richTextBox1.Copy();
  }

  private void menuItem3_Click(object sender, System.EventArgs e)
  {
   richTextBox1.Cut();
  }

  private void menuItem2_Click(object sender, System.EventArgs e)
  {
   richTextBox1.Paste();
  }


 }
}



]]>
用C#实现Z用C#实现ZTCP协议的网l通讯http://m.tkk7.com/zgghc/articles/118893.html牧月?/dc:creator>牧月?/author>Mon, 21 May 2007 07:41:00 GMThttp://m.tkk7.com/zgghc/articles/118893.htmlhttp://m.tkk7.com/zgghc/comments/118893.htmlhttp://m.tkk7.com/zgghc/articles/118893.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/118893.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/118893.htmlTCP协议是一个基本的|络协议Q基本上所有的|络服务都是ZTCP协议的,如HTTP,FTP{等Q所以要了解|络~程必M解基于TCP协议的编E。然而TCP协议是一个庞杂的体系Q要d的弄清楚它的实现不是一天两天的功夫Q所q的是在.net framework环境下,我们不必要去q究TCP协议底层的实玎ͼ一样可以很方便的编写出ZTCP协议q行|络通讯的程序?

要进行基于TCP协议的网l通讯Q首先必d立同q程L的连接,q接地址通常包括两部分——主机名和端口,?a >www.yesky.com:80中,www.yesky.com是L名,80指主机的80端口Q当ӞL名也可以用IP地址代替。当q接建立之后Q就可以使用q个q接d送和接收数据包,TCP协议的作用就是保证这些数据包能到辄点ƈ且能按照正确的顺序组装v来?

?net framework的类库(Class LibraryQ中Q提供了两个用于TCP|络通讯的类Q分别是TcpClient和TcpListener。由其英文意义显而易见,TcpClientcLZTCP协议的客Lc,而TcpListener是服务器端,监听(Listen)客户端传来的q接h。TcpClientc通过TCP协议与服务器q行通讯q获取信息,它的内部装了一个Socketcȝ实例Q这个Socket对象被用来用TCP协议向服务器h和获取数据。因Zq程L的交互是以数据流的Ş式出现的Q所以传输的数据可以使用.net framework中流处理技术读写。在我们下边的例子中Q你可以看到使用NetworkStreamcL作数据流的方法?

在下面的例子中,我们徏立一个时间服务器Q包括服务器端程序和客户端程序。服务器端监听客L的连接请求,建立q接以后向客L发送当前的pȝ旉?

先运行服务器端程序,下面截图昄了服务器端程序运行的状况Q?


然后q行客户端程序,客户端首先发送连接请求到服务器端Q服务器端回应后发送当前时间到客户端,q是客户端程序的截图Q?


发送完成后Q服务器端l等待下一ơ连接:


通过q个例子我们可以了解TcpClientcȝ基本用法Q要使用q个c,必须使用System.Net.Socket命名I间Q本例用到的三个命名I间如下Q?

using System;
using System.Net.Sockets;
using System.Text;//从字节数l中获取字符串时使用该命名空间中的类

首先讨论一下客LE序Q开始我们必d始化一个TcpClientcȝ实例Q?

TcpClient client = new TcpClient(hostName, portNum);

然后使用TcpClientcȝGetStream()Ҏ获取数据,q且用它初始化一个NetworkStreamcȝ实例Q?

NetworkStream ns = client.GetStream();

注意Q当使用L名和端口号初始化TcpClientcȝ实例Ӟ直到跟服务器建立了连接,q个实例才算真正建立Q程序才能往下执行。如果因为网l不通,服务器不存在Q服务器端口未开攄{原因而不能连接,E序抛出异常ƈ且中断执行?

建立数据之后,我们可以使用NetworkStreamcȝRead()Ҏ从流中读取数据,使用Write()Ҏ向流中写入数据。读取数据时Q首先应该徏立一个缓冲区Q具体的_是建立一个byte型的数组用来存放从流中读取的数据。Read()Ҏ的原型描q如下:

public override int Read(in byte[] buffer,int offset,int size)

buffer是缓冲数l,offset是数据(字节)在缓冲数l中存放的开始位|,size是读取的字节数目Q返回值是d的字节数。在本例中,单地使用该方法来d服务器反馈的信息Q?

byte[] bytes = new byte[1024];//建立~冲?
int bytesRead = ns.Read(bytes, 0, bytes.Length);//d字节?

然后昄到屏q上Q?

Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead));

最后不要忘记关闭连接:

client.Close();

下面是本例完整的E序清单Q?

using System;
using System.Net.Sockets;
using System.Text;

namespace TcpClientExample
{
public class TcpTimeClient
{
private const int portNum = 13;//服务器端口,可以随意修改
private const string hostName = "127.0.0.1";//服务器地址Q?27.0.0.1指本?

[STAThread]
static void Main(string[] args)
{
try
{
Console.Write("Try to connect to "+hostName+":"+portNum.ToString()+"\r\n");
TcpClient client = new TcpClient(hostName, portNum);
NetworkStream ns = client.GetStream();
byte[] bytes = new byte[1024];
int bytesRead = ns.Read(bytes, 0, bytes.Length);

Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead));

client.Close();
Console.ReadLine();//׃是控制台E序Q故Z清楚的看到结果,可以加上q句

}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}

上面q个例子清晰地演CZ客户端程序的~写要点Q下面我们讨Z下如何徏立服务器E序。这个例子将使用TcpListenerc,?3L口监听,一旦有客户端连接,立卛_客户端发送当前服务器的时间信息?

TcpListener的关键在于AcceptTcpClient()ҎQ该Ҏ检端口是否有未处理的q接hQ如果有未处理的q接hQ该Ҏ服务器同客户端徏立连接,q且q回一个TcpClient对象Q通过q个对象的GetStreamҎ建立同客L通讯的数据流。事实上QTcpListenerc还提供一个更为灵zȝҎAcceptSocket()Q当然灵zȝ代h是复杂,对于比较单的E序QAcceptTcpClient()已经_用了。此外,TcpListenercL供Start()Ҏ开始监听,提供Stop()Ҏ停止监听?

首先我们使用端口初始化一个TcpListener实例Qƈ且开始在13端口监听Q?

private const int portNum = 13;
TcpListener listener = new TcpListener(portNum);
listener.Start();//开始监?

如果有未处理的连接请求,使用AcceptTcpClientҎq行处理Qƈ且获取数据流Q?

TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();

然后Q获取本机时_q保存在字节数组中,使用NetworkStream.Write()Ҏ写入数据,然后客户端就可以通过Read()Ҏ从数据流中获取这D信息:

byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString());
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();//不要忘记关闭数据和q接
client.Close();

服务器端E序完整的程序清单如下:

using System;
using System.Net.Sockets;
using System.Text;


namespace TimeServer
{
class TimeServer
{
private const int portNum = 13;

[STAThread]
static void Main(string[] args)
{
bool done = false;
TcpListener listener = new TcpListener(portNum);
listener.Start();
while (!done)
{
Console.Write("Waiting for connection...");
TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
NetworkStream ns = client.GetStream();

byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString());

try
{
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();
client.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}

listener.Stop();
}
}
}

把上面两D늨序分别编译运行,OKQ我们已l用C#实现了基于TCP协议的网l通讯Q怎么P很简单吧Q?

使用上面介绍的基本方法,我们可以很容易的~写Z些很有用的程序,如FTPQ电子邮件收发,点对点即旉讯{等Q你甚至可以自己~制一个QQ来!  



]]>
c#.net常用函数和方法集http://m.tkk7.com/zgghc/articles/111850.html牧月?/dc:creator>牧月?/author>Thu, 19 Apr 2007 02:03:00 GMThttp://m.tkk7.com/zgghc/articles/111850.htmlhttp://m.tkk7.com/zgghc/comments/111850.htmlhttp://m.tkk7.com/zgghc/articles/111850.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/111850.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/111850.html 
1、DateTime 数字?
System.DateTime currentTime=new System.DateTime();
1.1 取当前年月日时分U?
currentTime=System.DateTime.Now;
1.2 取当前年
int q?currentTime.Year;
1.3 取当前月
int ?currentTime.Month;
1.4 取当前日
int ?currentTime.Day;
1.5 取当前时
int ?currentTime.Hour;
1.6 取当前分
int ?currentTime.Minute;
1.7 取当前秒
int U?currentTime.Second;
1.8 取当前毫U?
int 毫秒=currentTime.Millisecond;
Q变量可用中文)

2、Int32.Parse(变量) Int32.Parse("帔R")
字符型{?转ؓ32位数字型

3?变量.ToString()
字符型{?转ؓ字符?
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 K?2,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16q制)
12345.ToString("p"); //生成 1,234,500.00%


4、变?Length 数字?
取字串长度:
如: string str="中国";
int Len = str.Length ; //Len是自定义变量Q?str是求的字串的变量名

5、System.Text.Encoding.Default.GetBytes(变量)
字码转换 转ؓ比特?
如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
然后可得到比牚w度:
len = bytStr.Length;

6、System.Text.StringBuilder("")
字符串相加,Q?h不是也一PQ?
如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
sb.Append("中华");
sb.Append("人民");
sb.Append("共和?);

7、变?Substring(参数1,参数2);
截取字串的一部分Q参?为左起始位数Q参?为截取几位?
如:string s1 = str.Substring(0,2);

8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
取远E用户IP地址

9、穿q代理服务器取远E用L实IP地址Q?
if(Request.ServerVariables["HTTP_VIA"]!=null){
string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}else{
string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
}

10?Session["变量"];
存取Session|
如,赋| Session["username"]="布什";

取| Object objName=Session["username"];
String strName=objName.ToString();
清空Q?Session.RemoveAll();

11、String str=Request.QueryString["变量"];
用超链接传送变量?
如在M中链接:<a href=Edit.aspx?fbid=23>点击</a>
在Edit.aspx中取|String str=Request.QueryString["fdid"];

12、DOC对象.CreateElement("新徏节点?);
创徏XML文新节?

13、父节点.AppendChild(子节?Q?
新建的子节点加到XML文父节点下

14?父节?RemoveChild(节点);
删除节点

15、Response
Response.Write("字串")Q?
Response.Write(变量)Q?
向页面输出?

Response.Redirect("URL地址"Q;
跌{到URL指定的页?

16、char.IsWhiteSpce(字串变量Q位?——逻辑?
查指定位|是否空字符Q?
如:
string str="中国 人民";
Response.Write(char.IsWhiteSpace(str,2)); //l果为:True, W一个字W是0位,2是第三个字符?

17、char.IsPunctuation('字符') --逻辑?
查字W是否是标点W号
如:Response.Write(char.IsPunctuation('A')); //q回QFalse

18?int)'字符'
把字W{为数字,查代码点Q注意是单引受?
如:
Response.Write((int)'?); //l果Z字的代码Q?0013

19?char)代码
把数字{为字W,查代码代表的字符?
如:
Response.Write((char)22269); //q回“国”字?

20?Trim()
清除字串前后I格

21 、字串变?Replace("子字?,"替换?)
字串替换
如:
string str="中国";
str=str.Replace("?,"?); //国字换为央?
Response.Write(str); //输出l果为“中央?

再如Q(q个非常实用Q?

string str="q是<script>脚本";
str=str.Replace("<","<font><</font>"); //左括h换ؓ<font> ?< ?</font> Q或换ؓ<Q但估计lXML存诸后,再提Z会还原)
Response.Write(str); //昄为:“这?lt;script>脚本?

如果不替换,<script>不昄Q如果是一D脚本,运行;而替换后Q脚本将不运行?
q段代码的h值在于:你可以让一个文本中的所有HTML标签失效Q全部显C出来,保护你的h交互性的站点?
具体实现Q将你的表单提交按钮脚本加上下面代码Q?
string strSubmit=label1.Text; //label1是你让用h交数据的控gID?
strSubmit=strSubmit.Replace("<","<font><</font>");
然后保存或输出strSubmit?
用此Ҏq可以简单实现UBB代码?

22、Math.Max(i,j)
取i与j中的最大?
?int x=Math.Max(5,10); // x取?10

加一点吧 23、字串对?.....
加一点吧

23、字串对比一般都? if(str1==str2){ } , 但还有别的方?

(1)?
string str1; str2
//语法: str1.EndsWith(str2); __字串str1是否以字串str2l尾,q回布尔??
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"l束?); }

(2)?
//语法:str1.Equals(str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

(3)?
//语法 Equals(str1,str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

24、IndexOf() 、LastIndexOf()
查找字串中指定字W或字串首次Q最后一ơ)出现的位|?q回索引|如:
str1.IndexOf("?)Q?//查找“字”在str1中的索引|位置Q?
str1.IndexOf("字串")Q?/查找“字东y的W一个字W在str1中的索引|位置Q?
str1.IndexOf("字串",3,2)Q?/从str1W?个字WvQ查?个字W,查找“字东y的W一个字W在str1中的索引|位置Q?

25、Insert()
在字串中指定索引位插入指定字W。如Q?
str1.Insert(1,"?);在str1的第二个字符处插入“字”,如果str1="中国"Q插入后为“中字国”;

26、PadLeft()、PadRight()
在字串左Q或叻I加空格或指定char字符Q字串辑ֈ指定长度Q如Q?
<%
string str1="中国?;
str1=str1.PadLeft(10,'1'); //无第二参Cؓ加空?
Response.Write(str1); //l果为?111111中国人?Q?字串长ؓ10
%>

27、Remove()
从指定位|开始删除指定数的字W?
字串Ҏ一般都? if(str1==str2){ } , 但还有别的方?

1?
string str1; str2
//语法: str1.EndsWith(str2); __字串str1是否以字串str2l尾,q回布尔??
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"l束?); }

2?
//语法:str1.Equals(str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

3?
//语法 Equals(str1,str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

IndexOf()
查找字串中指定字W或字串首次出现的位|?q首索引|如:
str1.IndexOf("?)Q?//查找“字”在str1中的索引|位置Q?
str1.IndexOf("字串")Q?/查找“字东y的W一个字W在str1中的索引|位置Q?
str1.IndexOf("字串",3,2)Q?/从str1W?个字WvQ查?个字W,查找“字东y的W一个字W在str1中的索引|位置Q?

1.9 取中文日期显C——年月日时分
string strY=currentTime.ToString("f"); //不显C秒

1.10 取中文日期显C_q月
string strYM=currentTime.ToString("y");

1.11 取中文日期显C_月日
string strMD=currentTime.ToString("m");

1.12 取当前年月日Q格式ؓQ?003-9-23
string strYMD=currentTime.ToString("d");

1.13 取当前时分,格式为:14Q?4
string strT=currentTime.ToString("t");
更新一下, 上面不能~辑Q?

c#.net函数和方法集(大家一h加啊)


1、DateTime 数字?
System.DateTime currentTime=new System.DateTime();
1.1 取当前年月日时分U?
currentTime=System.DateTime.Now;
1.2 取当前年
int q?currentTime.Year;
1.3 取当前月
int ?currentTime.Month;
1.4 取当前日
int ?currentTime.Day;
1.5 取当前时
int ?currentTime.Hour;
1.6 取当前分
int ?currentTime.Minute;
1.7 取当前秒
int U?currentTime.Second;
1.8 取当前毫U?
int 毫秒=currentTime.Millisecond;
Q变量可用中文)

1.9 取中文日期显C——年月日时分
string strY=currentTime.ToString("f"); //不显C秒

1.10 取中文日期显C_q月
string strYM=currentTime.ToString("y");

1.11 取中文日期显C_月日
string strMD=currentTime.ToString("m");

1.12 取中文年月日
string strYMD=currentTime.ToString("D");

1.13 取当前时分,格式为:14Q?4
string strT=currentTime.ToString("t");

1.14 取当前时_格式为:2003-09-23T14:46:48
string strT=currentTime.ToString("s");

1.15 取当前时_格式为:2003-09-23 14:48:30Z
string strT=currentTime.ToString("u");

1.16 取当前时_格式为:2003-09-23 14:48
string strT=currentTime.ToString("g");

1.17 取当前时_格式为:Tue, 23 Sep 2003 14:52:40 GMT
string strT=currentTime.ToString("r");

1.18获得当前旉 n 天后的日期时?
DateTime newDay = DateTime.Now.AddDays(100);

2、Int32.Parse(变量) Int32.Parse("帔R")
字符型{?转ؓ32位数字型

3?变量.ToString()
字符型{?转ؓ字符?
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 K?2,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16q制)
12345.ToString("p"); //生成 1,234,500.00%


4、变?Length 数字?
取字串长度:
如: string str="中国";
int Len = str.Length ; //Len是自定义变量Q?str是求的字串的变量名

5、System.Text.Encoding.Default.GetBytes(变量)
字码转换 转ؓ比特?
如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
然后可得到比牚w度:
len = bytStr.Length;

6、System.Text.StringBuilder("")
字符串相加,Q?h不是也一PQ?
如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
sb.Append("中华");
sb.Append("人民");
sb.Append("共和?);

7、变?Substring(参数1,参数2);
截取字串的一部分Q参?为左起始位数Q参?为截取几位?
如:string s1 = str.Substring(0,2);

8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
?strong>q程用户IP地址

9、穿q代理服务器取远E用L实IP地址Q?
if(Request.ServerVariables["HTTP_VIA"]!=null){
string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}else{
string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
}

10?Session["变量"];
存取Session|
如,赋| Session["username"]="布什";

取| Object objName=Session["username"];
String strName=objName.ToString();
清空Q?Session.RemoveAll();

11、String str=Request.QueryString["变量"];
用超链接传送变量?
如在M中链接:<a href=Edit.aspx?fbid=23>点击</a>
在Edit.aspx中取|String str=Request.QueryString["fdid"];

12、DOC对象.CreateElement("新徏节点?);
创徏XML文档新节?

13、父节点.AppendChild(子节?Q?
新建的子节点加到XML文父节点下

14?父节?RemoveChild(节点);
删除节点

15、Response
Response.Write("字串")Q?
Response.Write(变量)Q?
向页面输出?

Response.Redirect("URL地址"Q;
跌{到URL指定的页?

16、char.IsWhiteSpce(字串变量Q位?——逻辑?
查指定位|是否空字符Q?
如:
string str="中国 人民";
Response.Write(char.IsWhiteSpace(str,2)); //l果为:True, W一个字W是0位,2是第三个字符?

17、char.IsPunctuation('字符') --逻辑?
查字W是否是标点W号
如:Response.Write(char.IsPunctuation('A')); //q回QFalse

18?int)'字符'
把字W{为数字,查代码点Q注意是单引受?
如:
Response.Write((int)'?); //l果Z字的代码Q?0013

19?char)代码
把数字{为字W,查代码代表的字符?
如:
Response.Write((char)22269); //q回“国”字?

20?Trim()
清除字串前后I格

21 、字串变?Replace("子字?,"替换?)
字串替换
如:
string str="中国";
str=str.Replace("?,"?); //国字换为央?
Response.Write(str); //输出l果为“中央?

再如Q(q个非常实用Q?

string str="q是<script>脚本";
str=str.Replace("<","<font><</font>"); //左括h换ؓ<font> ?< ?</font> Q或换ؓ<Q但估计lXML存诸后,再提Z会还原)
Response.Write(str); //昄为:“这?lt;script>脚本?

如果不替换,<script>不昄Q如果是一D脚本,运行;而替换后Q脚本将不运行?
q段代码的h值在于:你可以让一个文本中的所有HTML标签失效Q全部显C出来,保护你的h交互性的站点?
具体实现Q将你的表单提交按钮脚本加上下面代码Q?
string strSubmit=label1.Text; //label1是你让用h交数据的控gID?
strSubmit=strSubmit.Replace("<","<font><</font>");
然后保存或输出strSubmit?
用此Ҏq可以简单实现UBB代码?

22、Math.Max(i,j)
取i与j中的最大?
?int x=Math.Max(5,10); // x取?10

23、字串对比一般都? if(str1==str2){ } , 但还有别的方?

(1)?
string str1; str2
//语法: str1.EndsWith(str2); __字串str1是否以字串str2l尾,q回布尔??
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"l束?); }

(2)?
//语法:str1.Equals(str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

(3)?
//语法 Equals(str1,str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

24、IndexOf() 、LastIndexOf()
查找字串中指定字W或字串首次Q最后一ơ)出现的位|?q回索引|如:
str1.IndexOf("?)Q?//查找“字”在str1中的索引|位置Q?
str1.IndexOf("字串")Q?/查找“字东y的W一个字W在str1中的索引|位置Q?
str1.IndexOf("字串",3,2)Q?/从str1W?个字WvQ查?个字W,查找“字东y的W一个字W在str1中的索引|位置Q?

25、Insert()
在字串中指定索引位插入指定字W。如Q?
str1.Insert(1,"?);在str1的第二个字符处插入“字”,如果str1="中国"Q插入后为“中字国”;

26、PadLeft()、PadRight()
在字串左Q或叻I加空格或指定char字符Q字串辑ֈ指定长度Q如Q?
<%
string str1="中国?;
str1=str1.PadLeft(10,'1'); //无第二参Cؓ加空?
Response.Write(str1); //l果为?111111中国人?Q?字串长ؓ10
%>

27、Remove()
从指定位|开始删除指定数的字W?
<%
string str1="我是萨达姆的崇拜者之一";
Response.Write(str1.Remove(5,4)); //l果为“我是萨辑֧之一?
%>



]]>
路径Q文Ӟ目录QI/O常见操作汇总(二) http://m.tkk7.com/zgghc/articles/111840.html牧月?/dc:creator>牧月?/author>Thu, 19 Apr 2007 01:36:00 GMThttp://m.tkk7.com/zgghc/articles/111840.htmlhttp://m.tkk7.com/zgghc/comments/111840.htmlhttp://m.tkk7.com/zgghc/articles/111840.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/111840.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/111840.html摘要:
    文g操作是程序中非常基础和重要的内容Q而\径、文件、目录以及I/O都是在进行文件操作时的常见主题,q里xq些常见的问题作个ȝQ对于每个问题,量提供一些解x案,即没有你想要的{案Q也希望能提供给你一Ҏ益的思\Q如果你有好的徏议,恌能够留言Qɘq些内容更加完善?
    主要内容Q?br />    一、\径的相关操作Q?如判断\径是否合法,路径cdQ\径的特定部分Q合q\径,pȝ文g夹\径等内容Q?br />    二、相关通用文g对话框,q些对话框可以帮助我们操作文件系l中的文件和目录Q?br />    三、文件、目录、驱动器的操作,如获取它们的基本信息Q获取和讄文g和目录的属性,文g的版本信息,
        搜烦文g和目录,文g判等Q复制、移动、删除、重命名文g和目录;
    四、读写文Ӟ包括临时文gQ随机文件名{;
    五、对文gpȝ的监视;

    上一?/a>介绍了第一、二部分Q这一介l一下最重要的第三部分?br />   
    三、文件和目录相关操作
    文g和目录操作涉及的cM要是QFileInfo,DirectoryInfo,DriveInfoQ可以认为它们的一个实例对应着一个文件、目录、驱动器。它们的用法cMQ一般是文件、目录或驱动器的路径作ؓ参数传递给相应的构造函数创Z个实例,然后讉K它们的属性和Ҏ?br />    注意下面几点Q?br />    FileInfo cd DirectoryInfo c都l承自抽象类 FileSystemInfo Q?FileSystemInfo cd义了一些通用的属性,?CreationTime ?Exists {。但 DriveInfo cL有?FileSystemInfo c,所以它也就没有上面提到的那些通用属性了?br />
    FileInfo cd DirectoryInfo cȝ对象公开的属性值都是第一ơ查询时获取的|如果在以此查询之后文件或目录发生了改动,必调用它们的 Refresh Ҏ来更新这些属性。但 DriveInfo 则无需q么做,它的属性每ơ都会读取文件系l最新的信息?br />
    在创建文件、目录或驱动器的实例Ӟ如果使用了一个不存在的\径,q不会报错,q是你得C个对象,该对象表CZ个ƈ不存在的实体Q这意味着它的 Exists 属性(对于 DriveInfo 来说?IsReady 属性)gؓ false 。你仍然可以操作该实体,但如果尝试其它的大多数属性,׃引发相应?FileNotFoundException ?DirectoryNotFoundException ?DriveNotFoundException 异常?br />
    另外Q还可以使用 File / Directory c,q两个类的成员都是静态方法,所以如果只x行一个操?/span>Q那么?File/Directory 中的静态方法的效率比用相应的 FileInfo / DirectoryInfo中的 实例Ҏ可能更高。所有的 File / Directory Ҏ都要求当前所操作的文?/ 目录的\径?注意Q?File / Directory cȝ静态方法对所有方法都执行安全查?span style="COLOR: #ff2074">如果打算多次重用某个对象Q可考虑改用 FileInfo / DirectoryInfo 的相应实例方法,因ؓq不L需要安全检查? 

    下面是一些常见的问题Q?br />    问题1Q?span style="COLOR: #2000ff">如何获取指定文g的基本信息;
    解决ҎQ可以用FileInfocȝ相关属性:
    FileInfo.ExistsQ获取指定文件是否存在;
    FileInfo.NameQFileInfo.ExtensioinQ获取文件的名称和扩展名Q?br />    FileInfo.FullNameQ获取文件的全限定名Uͼ完整路径Q;
    FileInfo.DirectoryQ获取文件所在目录,q回cd为DirectoryInfoQ?br />    FileInfo.DirectoryNameQ获取文件所在目录的路径Q完整\径)Q?br />    FileInfo.LengthQ获取文件的大小Q字节数Q;
    FileInfo.IsReadOnlyQ获取文件是否只读;
    FileInfo.AttributesQ获取或讄指定文g的属性,q回cd为FileAttributes枚DQ可以是多个值的l合Q见问题2Q;
    FileInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTimeQ分别用于获取文件的创徏旉、访问时间、修Ҏ_
    Q更多内容还请参考MSDNQ?br />

    问题2Q?span style="COLOR: #2000ff">如何获取和设|文件的属性,比如只读、存、隐藏等Q?/span>
    解决ҎQ?br />    使用FileInfo.Attributes属性可以获取和讄文g的属性,该属性类型ؓFileAttributes枚DQ该枚D的每个DCZU属性,FileAttributes枚Dh属性(AttributeQFlagsAttributeQ所以该枚D的值可以进行组合,也就是一个文件可以同时拥有多个属性。下面看看具体的做法Q?br />    获取属性,比如判断一个文件是否是只读的:

    // 当文件具有其它属性时Q这U做法会p|
    if (file.Attributes == FileAttributes.ReadOnly)
    {
        chkReadonly.Checked 
= true;
    }

    
// q种写法׃会有问题了,它只查只d?/span>
    if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
    {
        chkReadonly.Checked 
= true;
    }

    讄属性,比如d和移除一个文件的只读属性:

    if (chkReadonly.Checked)
    {
        
// d只读属?/span>
        file.Attributes |= FileAttributes.ReadOnly;
    }
    
else
    {
        
// U除只读属?/span>
        file.Attributes &= ~FileAttributes.ReadOnly;
    }

    问题3Q?span style="COLOR: #2000ff">如何获取文g的版本信息(比如版本P版权声明Q公司名U等Q;
    解决ҎQ?br />    使用FileVersionInfoc,该类有大量的版本信息相关的属性。通过它的静态方法GetVersionInfo获得该类的一个实例,然后可以访问指定文件的版本信息了,非常方便。如FileVersion表示文g版本PLegalCopyright表示指定文g的版权声明,CompanyName表示指定文g的公司名U。(更多内容q请参考MSDNQ?/p>

    问题4Q?span style="COLOR: #2000ff">如何判断两个文g的内Ҏ否相同(_匚wQ;
    解决ҎQ?br />    使用System.security.Cryptography.HashAlgorithmcMؓ每个文g生成一个哈希码Q然后比较两个哈希码是否一致?br />    在比较文件内容的时候可以采用好几种Ҏ。例如,查文件的某一特定部分是否一_如果愿意Q你甚至可以逐字节读取文Ӟ逐字节进行比较。这两种Ҏ都是可以的,但在某些情况下,q是使用哈希码算法更为方ѝ?br />    该算法ؓ一个文件生成一个小的(通常Uؓ20字节Q二q制”指U”(binary fingerprintQ。从l计学角度看Q不同的文g不可能生成相同的哈希码。事实上Q即使是一个很的改动Q比如,修改了源文g中的一个bitQ,也会?0Q的几率来改变哈希码中的每一个bit。因此,哈希码常常用于数据安全方面?br />    要生成一个哈希码Q你必须首先创徏一个HashAlgorithm对象Q而这通常是调用HashAlgorithm.CreateҎ来完成的Q然后调用HashAlgorithm.ComputeHashҎQ它会返回一个存储哈希码的字节数l。代码如下:

    /// <summary>
    
/// 判断两个文g内容是否一?br />    /// </summary>
    public static bool IsFilesEqual(string fileName1, string fileName2)
    {
        
using (HashAlgorithm hashAlg = HashAlgorithm.Create())
        {
            
using (FileStream fs1 = new FileStream(fileName1, FileMode.Open), fs2 = new FileStream(fileName2, FileMode.Open))
            {
                
byte[] hashBytes1 = hashAlg.ComputeHash(fs1);
                
byte[] hashBytes2 = hashAlg.ComputeHash(fs2);

                
// 比较哈希?/span>
                return (BitConverter.ToString(hashBytes1) == BitConverter.ToString(hashBytes2));
            }
        }
    }

    问题5Q?span style="COLOR: #2000ff">如何获取指定目录的基本信息;
    解决ҎQ可以用DirectoryInfocȝ相关属性和ҎQ?br />    DirectoryInfo.ExistsQ获取指定目录是否存在;
    DirectoryInfo.NameQ获取目录的名称Q?br />    DirectoryInfo.FullNameQ获取目录的全限定名Uͼ完整路径Q;
    DirectoryInfo.AttributesQ获取或讄指定目录的属性,q回cd为FileAttributes枚DQ可以是多个值的l合Q ?
    DirectoryInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTimeQ分别用于获取目录的创徏旉、访问时间、修Ҏ_
    DirectoryInfo.ParentQ获取目录的上目录Q返回类型ؓDirectoryInfoQ?br />    DirectoryInfo.RootQ获取目录的根目录,q回cd为DirectoryInfoQ?br />

    问题6Q?span style="COLOR: #2000ff">如何获取指定目录包含的文件和子目录;
    解决ҎQ?br />    DirectoryInfo.GetFiles()Q获取目录中Q不包含子目录)的文Ӟq回cd为FileInfo[]Q支持通配W查找;
    DirectoryInfo.GetDirectories()Q获取目录(不包含子目录Q的子目录,
        q回cd为DirectoryInfo[]Q支持通配W查找;
    DirectoryInfo. GetFileSystemInfos()Q获取指定目录下Q不包含子目录)的文件和子目录,
        q回cd为FileSystemInfo[]Q支持通配W查找;

    问题7Q?span style="COLOR: #2000ff">如何获得指定目录的大;
    解决ҎQ?br />    查目录内的所有文Ӟ利用FileInfo.Length属性获取每个文件的大小Q然后进行合计,然后使用递归法处理所有的子目录的文gQ参考下面代码:

    /// <summary>
    
/// 计算一个目录的大小
    
/// </summary>
    
/// <param name="di">指定目录</param>
    
/// <param name="includeSubDir">是否包含子目?/span></param>
    
/// <returns></returns>
    private long CalculateDirSize(DirectoryInfo di, bool includeSubDir)
    {
        
long totalSize = 0;

        
// 查所有(直接Q包含的文g
        FileInfo[] files = di.GetFiles();
        
foreach (FileInfo file in files)
        {
            totalSize 
+= file.Length;
        }

        
// 查所有子目录Q如果includeSubDir参数为true
        if (includeSubDir)
        {
            DirectoryInfo[] dirs 
= di.GetDirectories();
            
foreach (DirectoryInfo dir in dirs)
            {
                totalSize 
+= CalculateDirSize(dir, includeSubDir);
            }
        }

        
return totalSize;
    }

    问题8Q?span style="COLOR: #2000ff">如何使用通配W搜索指定目录内的所有文Ӟ
    解决ҎQ?br />    使用DirectoryInfo.GetFilesҎ的重载版本,它可以接受一个过滤表辑ּQ返回FileInfo数组Q另外它的参数还可以指定是否对子目录q行查找。如Q?br />

    dir.GetFiles("*.txt"Q?SearchOption.AllDirectories);

    问题9Q?span style="COLOR: #2000ff">如何复制、移动、重命名、删除文件和目录Q?/span>
    解决ҎQ用FileInfo和DirectoryInfocR?br />    下面是FileInfocȝ相关ҎQ?br />    FileInfo.CopyToQ将现有文g复制到新文gQ其重蝲版本q允许覆盖已存在文gQ?br />    FileInfo.MoveToQ将指定文gUdC|,q提供指定新文g名的选项Q所以可以用来重命名文gQ而不改变位置Q;    FileInfo.DeleteQ永久删除文Ӟ如果文g不存在,则不执行M操作Q?br />    FileInfo.ReplaceQ用当前FileInfo对象对应文g的内Ҏ换目标文Ӟ而且指定另一个文件名作ؓ被替换文件的备䆾Q微软考虑实在周到?/p>

    下面是DirectoryInfocȝ相关ҎQ?br />    DirectoryInfo.CreateQ创建指定目录,如果指定路径中有多目录不存在,该方法会一一创徏Q?br />    DirectoryInfo.CreateSubdirectoryQ创建当前对象对应的目录的子目录Q?br />    DirectoryInfo.MoveToQ将目录Q及其包含的内容Q移动至一个新的目录,也可用来重命名目录;
    DirectoryInfo.DeleteQ删除目录(如果它存在的话)。如果要删除一个包含子目录的目录,要用它的重载版本,以指定递归删除?br />

    注意C没有QDirectoryInfocd了一个CopyToҎQ不q我们可以通过递归来实现这个功能:

    /// <summary>
    
/// 复制目录到目标目?br />    /// </summary>
    
/// <param name="source">源目?/span></param>
    
/// <param name="destination">目标目录</param>
    public static void CopyDirectory(DirectoryInfo source, DirectoryInfo destination)
    {
        
// 如果两个目录相同Q则无须复制
        if (destination.FullName.Equals(source.FullName))
        {
            
return;
        }

        
// 如果目标目录不存在,创徏?/span>
        if (!destination.Exists)
        {
            destination.Create();
        }

        
// 复制所有文?/span>
        FileInfo[] files = source.GetFiles();
        
foreach (FileInfo file in files)
        {
            
// 文件复制到目标目录
            file.CopyTo(Path.Combine(destination.FullName, file.Name), true);
        }

        
// 处理子目?/span>
        DirectoryInfo[] dirs = source.GetDirectories();
        
foreach (DirectoryInfo dir in dirs)
        {
            
string destinationDir = Path.Combine(destination.FullName, dir.Name);

            
// 递归处理子目?/span>
            CopyDirectory(dir, new DirectoryInfo(destinationDir));
        }
    }

 

    问题10Q?span style="COLOR: #2000ff">如何获得计算机的所有逻辑驱动器;
    解决ҎQ用DriveInfoc(需?NET 2.0Q?br />    DriveInfo.GetDrives()Q获得计机的所有逻辑驱动器,q回cd为DriveInfo[]Q?

    问题11Q?span style="COLOR: #2000ff">如何获取指定驱动器的信息Q?/span>
    解决ҎQ?br />    DriveInfo.NameQ获取驱动器的名Uͼ如C:\Q;
    DriveInfo.DriveTypeQ获取驱动器的类型(如FixedQCDRomQRemovableQNetwork{)Q?br />    DriveInfo.DriveFormatQ获取驱动器的格式(如NTFSQFAT32QCDFSQUDF{)Q?br />    DriveInfo.IsReadyQ获取驱动器是否已准备好Q比如CD是否已放入CD驱动器,如果驱动器没有准备好Q访问其信息会引发IOExceptioncd异常Q?br />    DriveInfo.AvailableFreeSpaceQ获取驱动器的可用空_
    DriveInfo.TotalFreeSpaceQ获取驱动器ȝ可用I间Q它与AvailableFreeSpace的不同在于AvailableFreeSpace会磁盘配额的讄Q?br />    DriveInfo.TotalSizeQ获取驱动器ȝI间Q?br />    DriveInfo.RootDirectoryQ获得驱动器的根目录QDirectoryInfocdQ;

    xQ我们已l了解了文g和目录相关的一些基本操作。但q不清楚如何去读写文件的内容Q下一中会详l了解这斚w的操作。?



]]>
路径Q文Ӟ目录QI/O常见操作汇总(三) http://m.tkk7.com/zgghc/articles/111842.html牧月?/dc:creator>牧月?/author>Thu, 19 Apr 2007 01:36:00 GMThttp://m.tkk7.com/zgghc/articles/111842.htmlhttp://m.tkk7.com/zgghc/comments/111842.htmlhttp://m.tkk7.com/zgghc/articles/111842.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/111842.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/111842.html    主要内容Q?br />    一、\径的相关操作Q如判断路径是否合法Q\径类型,路径的特定部分,合ƈ路径Q系l文件夹路径{内容;
    二、相关通用文g对话框,q些对话框可以帮助我们操作文件系l中的文件和目录Q?br />    三、文件和目录操作Q如复制、移动、删除、重命名Q文件的版本信息Q文件判{、搜索,d文g{;
    四、读写文ӞҎ件系l的监视Q?br />    五、其它,如时文Ӟ随机文g名等Q?

    W一?路径的相x作和通用文g对话框的使用

    W二?文g和目录的相关操作

    q一将介绍W四、五部分?br />

    文gd相关cMl?
    文gd操作涉及的类主要是:
    MarshalByRefObject c:允许在支持远E处理的应用E序中跨应用E序域边界访问对象;
    BinaryReader c:用特定的~码基元数据类型读作二q制倹{?br />    BinaryWriter c: 以二q制形式基元类型写入流Qƈ支持用特定的~码写入字符丌Ӏ?br />    Stream c: 提供字节序列的一般视图?br />    FileStreamc:公开以文件ؓȝ StreamQ既支持同步d操作Q也支持异步d操作?br />    MemoryStream c:创徏其支持存储区为内存的?br />    BufferedStream c:l另一上的读写操作添加一个缓冲层?br />    TextReader c:表示可读取连l字W系列的阅读器?br />    TextWriter c:表示可以~写一个有序字W系列的~写器?br />    StreamReader c:实现一?TextReaderQ其以一U特定的~码从字节流中读取字W?br />    StreamWriter c:实现一?TextWriterQ其以一U特定的~码向流中写入字W?br />    StringReader c:实现从字W串q行d?TextReader?br />    StringWriter c:实现一个用于将信息写入字符串的 TextWriter。该信息存储在基StringBuilder中?br />    在用它们之前最好能了解它们的承关p,有助于作出最合适的选择Q?br />

    另外q要注意一下FileInfo和Filecȝ一些方法,如CreateQCreateTextQOpen{,有时也会带来方便?br />    q些cȝ内容比较J多Q更多内容还请参考MSDN。?

    下面是一些常见的问题及其解决ҎQ?br />    问题1Q?span style="COLOR: #2000ff">如何d文本文gQƈ考虑不同的编码类型)Q?br />    解决ҎQ?br />    创徏一个FileStream对象用以引用该文件。要写入文gQ将FileStream对象装在StreamWriter对象中,使用光载了的WriteҎQ要d文gQ将FileStream对象装在StreamReader对象中,使用其Read或ReadLineҎQ?br />    .NET Framework允许通过StreamWriter和StreamReadercL作Q何流来读写文本文件。当使用StreamWritercd入数据时Q调用它的WriteҎQ该Ҏ在重载后可以支持所有常见的C#数据cdQ包括字W串、字W、整数、QҎ以及十进制数{。但WriteҎM的得到的数据{换ؓ文本Q如果希望将q些文本转换回原来的数据cdQ应使用WriteLineҎQ以保每个值都处于单独的一行上?br />    字符串的表现形式取决于你使用的编码,最常见的编码类型包括下面几U:ASCIIQUTF-16QUTF-7QUTF-8?br />    .NET Framework在System.Text命名I间中ؓ每种~码cd提供了一个类。在使用StreamWriter和StreamReadercLQ可以指定需要的~码cdQ或者用默认的UTF-8?br />    而在d文本文gӞ则要使用StreamReadercȝRead或ReadLineҎ。ReadҎd单个字符或者指定个数的字符Q返回类型ؓ字符或字W数l;ReadLineҎ则返回包含整行内容的字符ԌReadToEndҎ从当前位|读取至的l尾?br />    Q更多内容还请参考MSDNQ?br />    写入文本文g的示例:

    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        
// 创徏一个StreamWriter对象Q用UTF-8~码格式
        using (StreamWriter writer = new StreamWriter(fs, Encoding.UTF8))
        {
            
// 分别写入十进制数Q字W串和字W类型的数据
            writer.WriteLine(123.45M);
            writer.WriteLine(
"String Data");
            writer.WriteLine(
'A');
        }
    }
   
    d文本文g的示例:
    // 以只L式打开一个文本文?/span>
    using (FileStream fs = new FileStream(fileName, FileMode.Open))
    {
        
using (StreamReader reader = new StreamReader(fs, Encoding.UTF8))
        {
            
string text = string.Empty;

            
while(!reader.EndOfStream)
            {
                text 
= reader.ReadLine();
                txtMessage.Text 
+= text + Environment.NewLine;
            }
        }
    }

    问题2Q?span style="COLOR: #2000ff">如何d二进制文Ӟ使用强数据类型)Q?br />    解决ҎQ?br />    创徏一个FileStream对象用以引用该文件。要写入文gQ将FileStream对象装在BinaryWriter对象中,使用光载了的WriteҎQ要d文gQ将FileStream对象装在BinaryReader对象中,使用相应数据cd的ReadҎ。            ?
    .NET Framework允许通过BinaryWriter和BinaryReadercL作Q何流来读写二q制数据。当使用BinaryWritercd入数据时Q调用它的WriteҎQ该Ҏ在重载后可以支持所有常见的C#数据cdQ包括字W串、字W、整数、QҎ以及十进制数{,然后数据会被~码Zpd字节写入文gQ也可以配置该过E中的编码类型?br />    在用二q制文gӞ一定要特别注意其中的数据类型。当你读取数据时Q一定要使用BinaryReadercȝ某种强类型的ReadҎ。例如,要读取字W串Q要使用ReadStringҎ。(BinaryWriter在写入二q制文g时M记录字符串的长度以避免Q何可能的错误Q?br />    写入文g的示例:
    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        
using (BinaryWriter writer = new BinaryWriter(fs))
        {
            
// 写入十进制数Q字W串和字W?/span>
            writer.Write(234.56M);
            writer.Write(
"String");
            writer.Write(
'!');
        }
    }

    d文g的示例:
    // 以只L式打开一个二q制文g
    using (FileStream fs = new FileStream(fileName, FileMode.Open))
    {
        
using (StreamReader sr = new StreamReader(fs))
        {
            MessageBox.Show(
"全部数据Q?/span>" + sr.ReadToEnd());

            fs.Position 
= 0;
            
using (BinaryReader reader = new BinaryReader(fs))
            {
                
// 选用合适的数据cdd数据
                string message = reader.ReadDecimal().ToString() + Environment.NewLine;
                message 
+= reader.ReadString() + Environment.NewLine;
                message 
+= reader.ReadChar().ToString();
                MessageBox.Show(message);
            }
        }
    }

    问题3Q?span style="COLOR: #2000ff">如何异步d文gQ?/span>
    解决ҎQ?br />    有时你需要读取一个文件但又不希望影响E序的执行。常见的情况是读取一个存储在|络驱动器上的文件。        ?
    FileStream提供了对异步操作的基本支持,卛_的BeginRead和EndReadҎ。用这些方法,可以?NET FrameworkU程池提供的U程中读取一个数据块Q而无ȝ接与System.Threading命名I间中的U程cL交道?br />    采用异步方式d文gӞ可以选择每次d数据的大。根据情늚不同Q你可能会每ơ读取很的数据Q比如,你要数据逐块拯臛_一个文ӞQ也可能是一个相对较大的数据Q比如,在程序逻辑开始之前需要一定数量的数据Q。在调用BeginRead时指定要d数据块的大小Q同时传入一个缓冲区QbufferQ以存放数据。因为BeginRead和EndRead需要访问很多相同的信息Q如FileStreamQbufferQ数据块大小{,因此这些内容封装一个单独的cd中是一个好L?br />    下面q个cd是一个简单的CZ。AsyncProcessorcL供了StartProcessҎQ调用它开始读取,每次d操作l束QOnCompletedRead回调函数会被触发Q此时可以处理数据,如果q有剩余数据Q则开始一个新的读取操作。默认情况下QAsyncProcessorcLơ读?KB数据?br />
    class AsyncProcessor
    {
        
private Stream inputStream;

        
// 每次d块的大小
        private int bufferSize = 2048;

        
public int BufferSize
        {
            
get { return bufferSize; }
            
set { bufferSize = value; }
        }

        
// 容纳接收数据的缓?/span>
        private byte[] buffer;

        
public AsyncProcessor(string fileName)
        {
            buffer 
= new byte[bufferSize];

            
// 打开文gQ指定参Cؓtrue以提供对异步操作的支?/span>
            inputStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize, true);
        }

        
public void StartProcess()
        {
            
// 开始异步读取文Ӟ填充~存?/span>
            inputStream.BeginRead(buffer, 0, buffer.Length, OnCompletedRead, null);
        }

        
private void OnCompletedRead(IAsyncResult asyncResult)
        {
            
// 已经异步d一个 块 Q接收数?/span>
            int bytesRead = inputStream.EndRead(asyncResult);

            
// 如果没有dM字节Q则已达文件结?/span>
            if (bytesRead > 0)
            {
                
// 暂停以模拟对数据块的处理
                Debug.WriteLine("  异步U程Q已d一?/span>");
                Thread.Sleep(TimeSpan.FromMilliseconds(
20));

                
// 开始读取下一?/span>
                inputStream.BeginRead(buffer, 0, buffer.Length, OnCompletedRead, null);
            }
            
else
            {
                
// l束操作
                Debug.WriteLine("  异步U程Q读取文件结?/span>");
                inputStream.Close();
            }
        }
    }

    使用该类时可以这么写Q?br />
    // 开始在另一U程中异步读取文?/span>
    AsyncProcessor asyncIO = new AsyncProcessor("test.txt");
    asyncIO.StartProcess();

    
// 在主E序中,做其它事情,q里单地循环10U?/span>
    DateTime startTime = DateTime.Now;
    
while (DateTime.Now.Subtract(startTime).TotalSeconds < 10)
    {
        Debug.WriteLine(
"ȝ序:正在q行");
        
// 暂停U程以模拟耗时的操?/span>
        Thread.Sleep(TimeSpan.FromMilliseconds(100));
    }

    Debug.WriteLine(
"ȝ序:已完?/span>");
    
    问题4Q?span style="COLOR: #2000ff">如何创徏临时文gQ?br />    解决ҎQ?br />    有时需要在特定用户的时目录下创徏一个时文Ӟq要求该文gh唯一的名Uͼ避免与其它程序生成的临时文g相冲H。我们会有多U选择。最单的是,在程序所在目录内使用GUID或时间戳加上随机g为文件名U。但PathcL供的Ҏq是可以Z节省工作量,q就是它的静态GetTempFileNameҎQ它在当前用L临时目录下创Z个时文Ӟ文g名称一定是唯一的)Q时目录通常cM于这PC:\Documents and Settings\[username]\Local Settings\Temp?
    string tempFile = Path.GetTempFileName();

    
using (FileStream fs = new FileStream(tempFile, FileMode.Open))
    {
        
using (BinaryWriter writer = new BinaryWriter(fs))
        {
            
// 写入数据
            writer.Write("临时文g信息");
        }
    }

    
// Do something

    
// 最后删除时文?/span>
    File.Delete(tempFile);

    问题5Q?span style="COLOR: #2000ff">如何获得随机文g?/span>Q?br />    解决ҎQ?br />    使用Path.GetRandomFileNameҎQ它与GetTempFileNameҎ的不同之处在于它仅仅q回一个字W串但不会创建文件?br />

    问题6Q?span style="COLOR: #2000ff">监视文gpȝ的变?/span>Q?br />    解决ҎQ?br />    如果指定路径内的文g发生改变Q比如文件被修改或创建)Q你希望能对此作出反应?br />    如果E序与其它多个程序或业务处理相关Q常帔R要创Z个程序,q且只有文gpȝ发生变化时它才处于活动状态。你可以创徏一个这LE序Q让它定期区指定目录,此时会发现有件事情让你苦|得频J,׃费多的系l资源;而检得少Q那么检到变化的时间就会越ѝ?br />    q时可以使用FileSystemWatcherlgQ指定要q行监视的目录或文gQƈ处理其CreatedQDeletedQRenamedQChanged事g?br />    要用FileSystemWatcherlgQ首先要创徏它的一个实例,然后讄下列属性:
    PathQ指定要监视的目录;
    FilterQ指定要监视的文件类型,如?.txt”;
    NotifyFilterQ指定要监视的变化类型;
    FileSystemWatcher会引发四个关键的事gQCreatedQDeletedQRenamedQChanged。这些事仉在其FileSystemEventArgs参数中提供了相关文g的信息:如文件名Q\径,改变cdQRenamed事g中还可以了解到改变前的文件名和\径。如果要用q些事gQ则它的EnableRaisingEvents属性设|ؓfalse。CreatedQDeletedQRenamed三个事g比较Ҏ处理Q但Changed事g得当心了,你需要设|它的NotifyFilter属性以指示监视那些cd的变化。否则,E序会在文g被修ҎҎ在不断发生的事g中(~存区溢出)?br />

    // 讄相关属?/span>
    watcher.Path = appPath;
    watcher.Filter 
= "*.txt";
    watcher.IncludeSubdirectories 
= true;

    
// d事g处理函数
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted 
+= new FileSystemEventHandler(OnChanged);
    watcher.Changed 
+= new FileSystemEventHandler(OnChanged);
    watcher.Renamed 
+= new RenamedEventHandler(OnRenamed);

    void OnRenamed(object sender, RenamedEventArgs e)
    {
        
string renamedFormat = "File: {0} 被重命名为?{1}";
        txtChangedInfo.Text 
= string.Format(renamedFormat, e.OldFullPath, e.FullPath);
    }

    
void OnChanged(object sender, FileSystemEventArgs e)
    {
        
// 昄通知信息
        txtChangedInfo.Text = "文g: " + e.FullPath + "发生改变" + Environment.NewLine;
        txtChangedInfo.Text 
+= "改变cd: " + e.ChangeType.ToString();
    }

    问题7Q?span style="COLOR: #2000ff">如何使用独立存储文gQ?br />    解决ҎQ?br />    有时你需要将数据存储在文件中Q但Ҏ地硬盘驱动器却没有必要的权限QFileIOPermissionQ。这时要用到System.IO.IsolatedStorage命名I间中的c,q些cd怽的程序在特定用户的目录下数据写入文件而不需要直接访问硬盘驱动器的权限:

    // 创徏当前用户的独立存?/span>
    using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly())
    {
        
// 创徏一个文件夹
        store.CreateDirectory("MyFolder");

        
// 创徏一个独立存储文?/span>
        using (Stream fs = new IsolatedStorageFileStream("MyFile.txt", FileMode.Create, store))
        {
            StreamWriter writer 
= new StreamWriter(fs);
            writer.WriteLine(
"Test Line!");
            writer.Flush();
        }

        Debug.WriteLine(
"当前大小Q?/span>" + store.CurrentSize.ToString() + Environment.NewLine);
        Debug.WriteLine(
"范围Q?/span>" + store.Scope.ToString() + Environment.NewLine);
        
string[] files = store.GetFileNames("*.*");
        
if (files.Length > 0)
        {
            Debug.WriteLine(
"当前文gQ?/span>" + Environment.NewLine);
            
foreach (string file in files)
            {
                Debug.WriteLine(file 
+ Environment.NewLine);
            }
        }
    }

    注意Q本文部分内容ؓ作示例都作了化,所以肯定会有不合理之处Q仅希望能ؓ您提供一些线索和思\。在使用前还请多多参考相兌料?

]]>
路径Q文Ӟ目录QI/O常见操作汇总(一Q?http://m.tkk7.com/zgghc/articles/111839.html牧月?/dc:creator>牧月?/author>Thu, 19 Apr 2007 01:35:00 GMThttp://m.tkk7.com/zgghc/articles/111839.htmlhttp://m.tkk7.com/zgghc/comments/111839.htmlhttp://m.tkk7.com/zgghc/articles/111839.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/111839.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/111839.html摘要:
    文g操作是程序中非常基础和重要的内容Q而\径、文件、目录以及I/O都是在进行文件操作时的常见主题,q里xq些常见的问题作个ȝQ对于每个问题,量提供一些解x案,即没有你想要的{案Q也希望能提供给你一Ҏ益的思\Q如果你有好的徏议,恌能够留言Qɘq些内容更加完善?
    主要内容Q?br />    一、\径的相关操作Q?如判断\径是否合法,路径cdQ\径的特定部分Q合q\径,pȝ文g夹\径等内容Q?br />    二、相关通用文g对话框,q些对话框可以帮助我们操作文件系l中的文件和目录Q?br />    三、文件、目录、驱动器的操作,如获取它们的基本信息Q获取和讄文g和目录的属性,文g的版本信息,
        搜烦文g和目录,文g判等Q复制、移动、删除、重命名文g和目录;
    四、读写文Ӟ包括临时文gQ随机文件名{;
    五、对文gpȝ的监视;
    q一就先写一下前两部分?br />
    一、\径相x?/strong>
    问题1Q?span style="COLOR: #1f00fc">如何判定一个给定的路径是否有效/合法Q?/span>
    解决ҎQ通过Path.GetInvalidPathChars或Path.GetInvalidFileNameCharsҎ获得非法的\?文g名字W,可以
    Ҏ它来判断路径中是否包含非法字W;

    问题2Q?span style="COLOR: #1f00fc">如何定一个\径字W串是表C目录还是文Ӟ
    解决ҎQ?br />    1、用Directory.Exists或File.ExistҎQ如果前者ؓ真,则\径表C目录;如果后者ؓ真,则\径表C文Ӟ
    2、上面的Ҏ有个~点是不能处理那些不存在的文g或目录。这时可以考虑使用Path.GetFileNameҎ获得
       其包含的文g名,如果一个\径不为空Q而文件名为空那么它表C目录,否则表示文gQ?br />
    问题3Q?span style="COLOR: #2000ff">如何获得路径的某个特定部分(如文件名、扩展名{)Q?/span>
    解决ҎQ?br />    下面是几个相x法:
    Path.GetDirectoryName Q返回指定\径字W串的目录信息;
    Path.GetExtension Q?q回指定的\径字W串的扩展名Q?br />    Path.GetFileName Q?q回指定路径字符串的文g名和扩展名;
    Path.GetFileNameWithoutExtension Q返回不h扩展名的路径字符串的文g名;
    Path.GetPathRoot Q获取指定\径的根目录信息;
    Q更多内容还请参考MSDNQ?br />
    问题4Q?span style="COLOR: #2000ff">如何准确地合q两个\径而不用去担心那个烦h的”\”字W;
    解决ҎQ?br />    使用Path.CombineҎQ它会帮你处理烦人的”\”;

    问题5Q?span style="COLOR: #2000ff">如何获得pȝ目录的的路径Q如桌面Q我的文,临时文g夹等Q;
    解决ҎQ?br />    主要是用System. Environmentcȝ相关属性和ҎQ?br />    Environment. SystemDirectory属性:获取pȝ目录的完全限定\径;
    Environment. GetFolderPathҎQ该Ҏ接受的参数类型ؓEnvironment.SpecialFolder枚DQ?br />    通过q个Ҏ可以获得大量pȝ文g夹的路径Q如我的电脑Q我的电脑,桌面Q系l目录等Q?br />    Q更多内容还请参考MSDNQ;
    Path.GetTempPathҎQ返回当前系l的临时文g夹的路径Q?/p>

    问题6Q?span style="COLOR: #2000ff">如何判断一个\径是l对路径q是相对路径Q?/span>
    解决ҎQ?br />    使用Path.IsPathRootedҎQ?/p>

    问题7Q?span style="COLOR: #2000ff">如何d或设|当前目录;
    解决ҎQ?br />    使用DirectorycȝGetCurrentDirectory和SetCurrentDirectoryҎQ?/p>

    问题8Q?span style="COLOR: #2000ff">如何使用相对路径Q?/span>
    解决ҎQ?br />    讄当前目录后(见问?Q,可以用相对\径了。对于一个相对\径,我们可以
    使用Path.GetFullPathҎ获得它的完全限定路径Q绝对\径)?/p>

    注意Q如果打用相对\径,你将工作目录讄为各个交互文件的共同LQ否则可能会引入
    一些不易发现的安全隐患Q被恶意用户利用来访问系l文件?br />
    更多内容Q?br />    通常我们可以使用System.IO.PathcL处理路径。该cL供了一套方法和属性用于对包含文g或目录\径信息的字符串执行操作,q些操作是以跨^台的方式执行的,而这些方法和属性都是静态的?/p>

    注意路径仅仅是提供文件或目录位置的字W串。\径不必指向磁盘上的位|,例如Q\径可以映到内存中或讑֤上的位置。\径的准确格式是由当前q_定的。例如,在某些系l上Q\径可以驱动器h卷号开始,而此元素在其他系l中是不存在的。在某些pȝ上,文g路径可以包含扩展名,扩展名指C在文g中存储的信息的类型。文件扩展名的格式是与^台相关的Q例如,某些pȝ扩展名的长度限制ؓ 3 个字W,而其他系l则没有q样的限制。当前^台还定用于分隔路径中各元素的字W集Q以及确定在指定路径时不能用的字符集。因些差异,所?Path cȝ字段以及 Path cȝ某些成员的准行为是与^台相关的?/p>

    路径可以包含l对或相对位|信息。绝对\径完整指定一个位|:文g或目录可被唯一标识Q而与当前位置无关。相对\径指定部分位|:当定位用相对路径指定的文件时Q当前位|用作v始点?/p>

    Pathcȝ大多数成员不与文件系l交互,q且不验证\径字W串指定的文件是否存在。修改\径字W串的Path cL员(例如 ChangeExtensionQ对文gpȝ中文件的名称没有影响。但Path成员实验证指定路径字符串的内容Qƈ且如果字W串包含在\径字W串中无效的字符Q如 InvalidPathChars 中的定义Q,则引?ArgumentException异常。例如,在基?Windows 的桌面^CQ无效\径字W可能包括引?(")、小于号 (<)、大于号 (>)、管道符?(|)、退?(\b)、空 (\0) 以及?16 ?18 和从 20 ?25?Unicode 字符?/p>

    Path cȝ成员使您可以快速方便地执行常见操作Q例如确定文件扩展名是否是\径的一部分Q以及将两个字符串组合成一个\径名?/p>    多数情况下,如果q些Ҏ接收了无效的路径会抛出异常,但如果\径名是因为包含了通配W(*?Q从而无效,则不会抛出异常(可以使用GetInvalidPathCharsҎ来非法的路径字符Q。我们可以根据该原则判断一个\径是否合法?br />
    二、相关的通用文g对话?/strong>   

    1?span style="COLOR: #2000ff">文gҎ览对话框QFolderBrowserDialogc)
    用户可以通过该对话框览、新建ƈ选择文g夹,如下图:
   

    主要属性:
    DescriptionQ树视图控g上显C的说明文本Q如上图中的”选择要进行计的目录”;
    RootFolderQ获取或讄从其开始浏览的Ҏ件夹Q如上图中设|的我的电脑Q默认ؓ桌面Q;
    SelectedPathQ获取或讄用户选定的\径,如果讄了该属性,打开对话框时会定位到指定路径Q默认ؓҎ件夹Q关闭对话框时根据该属性获取用L户选定的\径;
    ShowNewFolderButtonQ获取或讄是否昄新徏对话框按钮;

    主要ҎQ?br />    ShowDialogQ打开该对话框Q返回gؓDialogResultcd|如果为DialogResult.OKQ则可以由SelectedPath属性获取用户选定的\径;

    dlgOpenFolder.Description = "选择要进行计的目录";
    dlgOpenFolder.RootFolder 
= Environment.SpecialFolder.MyComputer;
    dlgOpenFolder.ShowNewFolderButton 
= true;
    DialogResult result 
= dlgOpenFolder.ShowDialog(this);
    
if (result == DialogResult.OK)
    {
        txtDirPath.Text 
= dlgOpenFolder.SelectedPath;
    }

 

    2?span style="COLOR: #2000ff">打开文g对话?/span>QOpenFileDialogc)
    用户可以通过该对话框选择一个文Ӟ见下图:
   

    主要属性:
    CheckFileExistsQ该值指C如果用h定不存在的文件名Q对话框是否昄警告Q?br />    FileName(s)Q获取或讄一个包含在文g对话框中选定的文件名的字W串Q?br />    FilterQ获取或讄对话框的文gcd列表Q?br />    FilterIndexQ对话框的文件类型列表的索引Q基?的)Q?br />    InitialDirectoryQ获取或讄文g对话框显C的初始目录Q?br />    MultiselectQ该值指C对话框是否允许选择多个文gQ?br />    ShowReadOnlyQ该值指C对话框是否包含只读复选框Q?br />    TitleQ获取或讄文g对话框标题;
    主要ҎQ?br />    OpenFileQ打开用户选定的具?span style="COLOR: #2000ff">只读权限的文Ӟ
    ShowDialogQ打开该模式对话框Q?
    dlgOpenFile.Title = "打开源文?/span>";
    dlgOpenFile.InitialDirectory 
= @"C:\Inetpub\";
    dlgOpenFile.Filter 
= "文本文g (*.txt)|*.txt|所有文件?*.*)|*.*";
    dlgOpenFile.FilterIndex 
= 2;
    dlgOpenFile.ShowReadOnly 
= true;
    DialogResult dr 
= dlgOpenFile.ShowDialog();
    
if (dr == DialogResult.OK)
    {
       
string fileName = dlgOpenFile.FileName;
    }

    3?span style="COLOR: #2000ff">保存文g对话?/span>QSaveFileDialogc)
    用户可以通过该对话框保存一个文Ӟ见下图:
   

    主要属性:
    大部分与打开文g对话框类|此处略过Q下面几个值得注意Q?br />    CreatePromptQ该值指C如果用h定不存在的文Ӟ是否提示用户允许创徏该文Ӟ
    OverwritePromptQ该值指C如果用h定的文g名已存在Q对话框是否昄警告Q?br />    主要ҎQ?br />    OpenFileQ打开用户选定的具有读/写权限的文gQ?br />    ShowDialogQ打开该模式对话框Q?br />    CZ代码Q?br />

    dlgSaveFile.Title = "打开目标文g";
    dlgSaveFile.InitialDirectory 
= @"C:\Inetpub\";
    dlgSaveFile.Filter 
= "文本文g (*.txt)|*.txt|所有文件?*.*)|*.*";
    dlgSaveFile.FilterIndex 
= 2;
    DialogResult dr 
= dlgSaveFile.ShowDialog();
    
if (dr == DialogResult.OK)
    {
       
string fileName = dlgSaveFile.FileName;
    }

    xQ我们操作的都只是\径,要知道,q些路径仅仅是字W串Q还没有涉及到文件系l中的真实文件。下一中会详l了解有x件和目录的相x作?img src ="http://m.tkk7.com/zgghc/aggbug/111839.html" width = "1" height = "1" />

]]>
使用.NET 2.0中的U表QStopwatchc进行速度试 http://m.tkk7.com/zgghc/articles/111835.html牧月?/dc:creator>牧月?/author>Thu, 19 Apr 2007 01:21:00 GMThttp://m.tkk7.com/zgghc/articles/111835.htmlhttp://m.tkk7.com/zgghc/comments/111835.htmlhttp://m.tkk7.com/zgghc/articles/111835.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/111835.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/111835.html 使用.NET 2.0中的U表QStopwatchc进行速度试     软g的运行速度必须要在用户可以接受的范围内。通常Q改善那些短暂的但频J用的例程的速度会大q度地提高Y件的整体速度?br />    要改善速度Q当焉先要能够量度旉。好Q那我们考虑一下在跑道上的情况Q枪C响,马上按下U表开始计Ӟ在选手到达l点那一ȝ束计Ӟq时可以知道该选手所用的旉了。要开始对下一轮比赛计时前Q要先将U表归零?NET2.0也提供了q样一个秒表:Stopwatchc,它可以比较精地量旉?

    速度试Q?/strong>
    软g的性能和可性是一个复杂的主题。要保应用E序能够满用户的期望,需要在开发周期内考虑它的性能和可性。这在设计阶D至关重要,一个糟p的设计几乎肯定会导致糟p的用户体验。然而,仅仅有好的设计也不能保证E序能够高效地运行,最l代码的质量同样重要?br />    量度一个运行时间较长的例程相当单。如果一个过E会持箋几分钟,只要一块腕表就可以记录它的旉了。比如一个执行时间ؓ两分钟的q程Q?0%的改善能够节?2U,q是很容易去定的?br />    而如果要量一个非常短暂的q程Q就要考虑更好的精性了。比如有一些很的例程Q它们的q行旉可能只有千分之一U,但会被调?00万次Q这L累积效果明显了。在.NET framework的先前版本中Q需要用Windows API函数Q而在.NET framework 2.0中,微Y引入了StopwatchQ它是我们的秒表)cL化时间的量度d?br />    Stopwatchc?
    使用StopwatchcL量度旉非常单。跟现实生活中的U表一Pq个cȝ对象也能够对计数器进行开始、停止、归Ӟ重置Q操作,不过它可比一般的U表_多了Q它能够_到微U(也就是百万分之一U)?br />    CZ代码Q?/strong>
    要演CStopwatch的用还是来D代码吧。下面是一个控制台应用E序Q它??00万之间的所有整数篏加:

    using System;

    
namespace StopWatchClass
    {
        
class Program
        {
            
static void Main(string[] args)
            {
                long total = 0;

                
for (int i = 1; i <= 10000000; i++)
                {
                    total 
+= i;
                }
            }
        }
    }
   
    dStopwatch对象Q?br />    StopwatchcM于System.Diagnostics命名I间。下面是d对象后的代码Q?br />
    using System;
    
using System.Diagnostics;

    
namespace StopWatchClass
    {
        
class Program
        {
            
static void Main(string[] args)
            {
                Stopwatch timer 
new Stopwatch();
                
long total = 0;

                
for (int i = 1; i <= 10000000; i++)
                {
                    total 
+= i;
                }
            }
        }
    }

    控制Stopwatch对象Q?br />    Stopwatch提供了几个方法用以控制Stopwatch对象。StartҎ开始一个计时操作,StopҎ停止计时。此时如果第二次使用StartҎQ将l箋计时Q最l的计时l果Zơ计时的累加。ؓ避免q种情况Q在W二ơ计时前用ResetҎ对象归零。这三个Ҏ都不需要参数。代码是Q?
    using System;
    
using System.Diagnostics;

    
namespace StopWatchClass
    {
        
class Program
        {
            
static void Main(string[] args)
            {
                Stopwatch timer 
= new Stopwatch();
                
long total = 0;

                timer.Start();
                
for (int i = 1; i <= 10000000; i++)
                {
                    total 
+= i;
                }

                timer.Stop();

            }
        }
    }

    dStopwatchl果Q?br />    在结束计时后下一步就是读取计时结果了。StopwatchcL供了以下属性:
  1. ElapsedQ返回一个TimeSpan对象Q表C时时间间隔;
  2. ElapsedMillisecondsQ返回计时经q的微秒敎ͼ_度稍差,适合于稍长一点的计时Q?
  3. ElapsedTicksQ返回计时经q的计时器刻度(timer tickQ数。计时器d是Stopwatch对象可能的最量度单位。计时器d旉的长度由特定的计机和操作系l确定。Stopwatch对象的Frequency静态字D늚DCZU所包含的计时器d数。注意它与TimeSpan的Ticks属性所用的旉单位的区别?

        应当Ҏ计时d的情况选择其中的一个属性。在我们的示例程序中QElapsed属性提供了需要的_度,用它来输出经q的微秒数。这也是TimeSpan的最高精度了?br />    下面是最l的E序代码Q?br />

        using System;
        
    using System.Diagnostics;

        
    namespace StopWatchClass
        {
            
    class Program
            {
                
    static void Main(string[] args)
                {
                    Stopwatch timer 
    = new Stopwatch();
                    
    long total = 0;

                    timer.Start();
                    
    for (int i = 1; i <= 10000000; i++)
                    {
                        total 
    += i;
                    }

                    timer.Stop();

                    
    decimal micro = timer.Elapsed.Ticks / 10m;
                    Console.WriteLine(
    "Execution time was {0:F1} microseconds.", micro);
                }
            }
        }


        另外Q用IsRunning属性可以查看一个Stopwatch实例是否正在计时Q用StartNewҎ可以开始一个新的计时器?br />
    Example:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Diagnostics;

    namespace StopWatchClass
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stopwatch timer = new Stopwatch();
               
                long total = 0;
                timer.Start();
                //for (int i = 0; i <= 1000000;i++){total = total + i;}
                StringBuilder ss = new StringBuilder("你好");
                for (int i = 0; i < 100; i++)
                    ss.Append("masjkfhkjsadhfkashdfjasdhfkjasdfuirusdg");
                timer.Stop();
                double micr = timer.Elapsed.TotalMilliseconds;
                timer.Reset();
                timer.Start();
                string s = "你好";
                for (int i = 0; i < 100; i++)
                {
                    s = s + "masjkfhkjsadhfkashdfjasdhfkjasdfuirusdg";
                }
                timer.Stop();
                //NET执行效率工具
                string micro =Convert.ToString( timer.Elapsed.TotalMilliseconds );
                Console.WriteLine(micr + "    " + micro);
                Console.Read();
            }
        }
    }



    ]]>
    C#中DateTime的问?/title><link>http://m.tkk7.com/zgghc/articles/96756.html</link><dc:creator>牧月?/dc:creator><author>牧月?/author><pubDate>Tue, 30 Jan 2007 08:29:00 GMT</pubDate><guid>http://m.tkk7.com/zgghc/articles/96756.html</guid><wfw:comment>http://m.tkk7.com/zgghc/comments/96756.html</wfw:comment><comments>http://m.tkk7.com/zgghc/articles/96756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zgghc/comments/commentRss/96756.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zgghc/services/trackbacks/96756.html</trackback:ping><description><![CDATA[ <span id="1zj5z53" class="t18">  <p>q几天因为C#的DateTime困惑了一下,也顺便研I了一下DateTime对象Q原来表现这么丰富!<br />我在q里主要介绍datetimecd在tostring()format的格式设|,然后有兴的q可以看看datetimcd是如何对其本w做操作W重载的QMsdn上有介绍Q我׃累赘了。友情提C:datetime.now.tostring()Ҏ默认的你是无法得到全部的旉的格式的Q只能得到日期,得不到具体时_如果要具体时_应该用datetime的tostringQ)重蝲Qdatetime.now.tostring("F")q样p拿到完整的时间格式了。。。我也就是ؓq郁闷了好久。。?/p><p>参数format格式详细用法 <br /> 格式字符 兌属?说明 <br /> d ShortDatePattern <br /> D LongDatePattern <br /> f 完整日期和时_长日期和短时_ <br /> F FullDateTimePatternQ长日期和长旉Q?<br /> g 常规Q短日期和短旉Q?<br /> G 常规Q短日期和长旉Q?<br /> m、M MonthDayPattern <br /> r、R RFC1123Pattern <br /> s 使用当地旉?SortableDateTimePatternQ基?ISO 8601Q?<br /> t ShortTimePattern <br /> T LongTimePattern <br /> u UniversalSortableDateTimePattern 用于昄通用旉的格?<br /> U 使用通用旉的完整日期和旉Q长日期和长旉Q?<br /> y、Y YearMonthPattern <br />  <br /> 下表列出了可被合q以构造自定义模式的模式。这些模式是区分大小写的Q例如,识别“MM”,但不识别“mm”。如果自定义模式包含I白字符或用单引hh的字W,则输出字W串也包含这些字W。未定义为格式模式的一部分或未定义为格式字W的字符按其原义复制?<br />  <br /> 格式模式 说明 <br /> d 月中的某一天。一位数的日期没有前导零?<br /> dd 月中的某一天。一位数的日期有一个前导零?<br /> ddd 周中某天的羃写名Uͼ?AbbreviatedDayNames 中定义?<br /> dddd 周中某天的完整名Uͼ?DayNames 中定义?<br /> M 月䆾数字。一位数的月份没有前导零?<br /> MM 月䆾数字。一位数的月份有一个前导零?<br /> MMM 月䆾的羃写名Uͼ?AbbreviatedMonthNames 中定义?<br /> MMMM 月䆾的完整名Uͼ?MonthNames 中定义?<br /> y 不包含纪元的q䆾。如果不包含U元的年份小?10Q则昄不具有前导零的年份?<br /> yy 不包含纪元的q䆾。如果不包含U元的年份小?10Q则昄h前导零的q䆾?<br /> yyyy 包括U元的四位数的年份?<br /> gg 时期或纪元。如果要讄格式的日期不h兌的时期或U元字符Ԍ则忽略该模式?<br /> h 12 时制的时。一位数的小时数没有前导零?<br /> hh 12 时制的时。一位数的小时数有前导零?<br /> H 24 时制的时。一位数的小时数没有前导零?<br /> HH 24 时制的时。一位数的小时数有前导零?<br /> m 分钟。一位数的分钟数没有前导零?<br /> mm 分钟。一位数的分钟数有一个前导零?<br /> s U。一位数的秒数没有前导零?<br /> ss U。一位数的秒数有一个前导零?<br /> f U的数_ֺZ位。其余数字被截断?<br /> ff U的数_ֺZ位。其余数字被截断?<br /> fff U的数_ֺZ位。其余数字被截断?<br /> ffff U的数_ֺ为四位。其余数字被截断?<br /> fffff U的数_ֺZ位。其余数字被截断?<br /> ffffff U的数_ֺ为六位。其余数字被截断?<br /> fffffff U的数_ֺZ位。其余数字被截断?<br /> t ?AMDesignator ?PMDesignator 中定义的 AM/PM 指示的W一个字W(如果存在Q?<br /> tt ?AMDesignator ?PMDesignator 中定义的 AM/PM 指示(如果存在Q?<br /> z 时区偏移量(?”或?”后面仅跟小Ӟ。一位数的小时数没有前导零。例如,太^z标准时间是?8”?<br /> zz 时区偏移量(?”或?”后面仅跟小Ӟ。一位数的小时数有前导零。例如,太^z标准时间是?08”?<br /> zzz 完整时区偏移量(?”或?”后面跟有小时和分钟Q。一位数的小时数和分钟数有前导零。例如,太^z标准时间是?08:00”?<br /> : ?TimeSeparator 中定义的默认旉分隔W?<br /> / ?DateSeparator 中定义的默认日期分隔W?<br /> % c 其中 c 是格式模式(如果单独使用Q。如果格式模式与原义字符或其他格式模式合qӞ则可以省略?”字W?<br /> \ c 其中 c 是Q意字W。照原义昄字符。若要显C反斜杠字符Q请使用“\\”?<br />  <br /> 只有上面W二个表中列出的格式模式才能用于创徏自定义模式;在第一个表中列出的标准格式字符不能用于创徏自定义模式。自定义模式的长度至ؓ两个字符Q例如, <br />  <br /> DateTime.ToString( "d") q回 DateTime |“d”是标准短日期模式?<br /> DateTime.ToString( "%d") q回月中的某天;?d”是自定义模式?<br /> DateTime.ToString( "d ") q回后面跟有一个空白字W的月中的某天;“d”是自定义模式?<br />  <br /> 比较方便的是,上面的参数可以随意组?q且不会出错,多试?肯定会找C要的旉格式 <br /> 如要得到2005q?6?q样格式的时?<br /> 可以q样? <br /> date.ToString("yyyyqMM?, DateTimeFormatInfo.InvariantInfo)</p></span> <img src ="http://m.tkk7.com/zgghc/aggbug/96756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zgghc/" target="_blank">牧月?/a> 2007-01-30 16:29 <a href="http://m.tkk7.com/zgghc/articles/96756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>net数据库操?/title><link>http://m.tkk7.com/zgghc/articles/93845.html</link><dc:creator>牧月?/dc:creator><author>牧月?/author><pubDate>Mon, 15 Jan 2007 01:25:00 GMT</pubDate><guid>http://m.tkk7.com/zgghc/articles/93845.html</guid><wfw:comment>http://m.tkk7.com/zgghc/comments/93845.html</wfw:comment><comments>http://m.tkk7.com/zgghc/articles/93845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zgghc/comments/commentRss/93845.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zgghc/services/trackbacks/93845.html</trackback:ping><description><![CDATA[     摘要: 注意Q本文暂时不讲解 数据? 的数据调出和昄Q因Z涉及的东西比较多Q所以我们将另外详细讲解。本文主要要讲的是数据库的增加、删除、修攏V? ...  <a href='http://m.tkk7.com/zgghc/articles/93845.html'>阅读全文</a><img src ="http://m.tkk7.com/zgghc/aggbug/93845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zgghc/" target="_blank">牧月?/a> 2007-01-15 09:25 <a href="http://m.tkk7.com/zgghc/articles/93845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET 函数http://m.tkk7.com/zgghc/articles/93116.html牧月?/dc:creator>牧月?/author>Thu, 11 Jan 2007 03:44:00 GMThttp://m.tkk7.com/zgghc/articles/93116.htmlhttp://m.tkk7.com/zgghc/comments/93116.htmlhttp://m.tkk7.com/zgghc/articles/93116.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/93116.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/93116.html  

    1、DateTime 数字?
    System.DateTime currentTime=new System.DateTime();
    1.1 取当前年月日时分U?
    currentTime=System.DateTime.Now;
    1.2 取当前年
    int q?currentTime.Year;
    1.3 取当前月
    int ?currentTime.Month;
    1.4 取当前日
    int ?currentTime.Day;
    1.5 取当前时
    int ?currentTime.Hour;
    1.6 取当前分
    int ?currentTime.Minute;
    1.7 取当前秒
    int U?currentTime.Second;
    1.8 取当前毫U?
    int 毫秒=currentTime.Millisecond;
    Q变量可用中文)

    2、Int32.Parse(变量) Int32.Parse("帔R")
    字符型{?转ؓ32位数字型

    3?变量.ToString()
    字符型{?转ؓ字符?
    12345.ToString("n"); //生成 12,345.00
    12345.ToString("C"); //生成 K?2,345.00
    12345.ToString("e"); //生成 1.234500e+004
    12345.ToString("f4"); //生成 12345.0000
    12345.ToString("x"); //生成 3039 (16q制)
    12345.ToString("p"); //生成 1,234,500.00%

    4、变?Length 数字?
    取字串长度:
    如: string str="中国";
    int Len = str.Length ; //Len是自定义变量Q?str是求的字串的变量名

    5、System.Text.Encoding.Default.GetBytes(变量)
    字码转换 转ؓ比特?
    如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
    然后可得到比牚w度:
    len = bytStr.Length;

    6、System.Text.StringBuilder("")
    字符串相加,Q?h不是也一PQ?
    如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
    sb.Append("中华");
    sb.Append("人民");
    sb.Append("共和?);

    7、变?Substring(参数1,参数2);
    截取字串的一部分Q参?为左起始位数Q参?为截取几位?
    如:string s1 = str.Substring(0,2);

    8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
    取远E用户IP地址

    9、穿q代理服务器取远E用L实IP地址Q?
    if(Request.ServerVariables["HTTP_VIA"]!=null){
    string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    }else{
    string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
    }

    10?Session["变量"];
    存取Session|
    如,赋| Session["username"]="布什";

    取| Object objName=Session["username"];
    String strName=objName.ToString();
    清空Q?Session.RemoveAll();

    11、String str=Request.QueryString["变量"];
    用超链接传送变量?
    如在M中链接:<a href=Edit.aspx?fbid=23>点击</a>
    在Edit.aspx中取|String str=Request.QueryString["fdid"];

    12、DOC对象.CreateElement("新徏节点?);
    创徏XML文新节?

    13、父节点.AppendChild(子节?Q?
    新建的子节点加到XML文父节点下

    14?父节?RemoveChild(节点);
    删除节点

    15、Response
    Response.Write("字串")Q?
    Response.Write(变量)Q?
    向页面输出?

    Response.Redirect("URL地址"Q;
    跌{到URL指定的页?

    16、char.IsWhiteSpce(字串变量Q位?——逻辑?
    查指定位|是否空字符Q?
    如:
    string str="中国 人民";
    Response.Write(char.IsWhiteSpace(str,2)); //l果为:True, W一个字W是0位,2是第三个字符?

    17、char.IsPunctuation('字符') --逻辑?
    查字W是否是标点W号
    如:Response.Write(char.IsPunctuation('A')); //q回QFalse

    18?int)'字符'
    把字W{为数字,查代码点Q注意是单引受?
    如:
    Response.Write((int)'?); //l果Z字的代码Q?0013

    19?char)代码
    把数字{为字W,查代码代表的字符?
    如:
    Response.Write((char)22269); //q回“国”字?

    20?Trim()
    清除字串前后I格

    21 、字串变?Replace("子字?,"替换?)
    字串替换
    如:
    string str="中国";
    str=str.Replace("?,"?); //国字换为央?
    Response.Write(str); //输出l果为“中央?

    再如Q(q个非常实用Q?

    string str="q是<script>脚本";
    str=str.Replace("<","<font><</font>"); //左括h换ؓ<font> ?< ?</font> Q或换ؓ<Q但估计lXML存诸后,再提Z会还原)
    Response.Write(str); //昄为:“这?lt;script>脚本?

    如果不替换,<script>不昄Q如果是一D脚本,运行;而替换后Q脚本将不运行?
    q段代码的h值在于:你可以让一个文本中的所有HTML标签失效Q全部显C出来,保护你的h交互性的站点?
    具体实现Q将你的表单提交按钮脚本加上下面代码Q?
    string strSubmit=label1.Text; //label1是你让用h交数据的控gID?
    strSubmit=strSubmit.Replace("<","<font><</font>");
    然后保存或输出strSubmit?
    用此Ҏq可以简单实现UBB代码?

    22、Math.Max(i,j)
    取i与j中的最大?
    ?int x=Math.Max(5,10); // x取?10

    加一点吧 23、字串对?.....
    加一点吧

    23、字串对比一般都? if(str1==str2){ } , 但还有别的方?

    (1)?
    string str1; str2
    //语法: str1.EndsWith(str2); __字串str1是否以字串str2l尾,q回布尔??
    if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"l束?); }

    (2)?
    //语法:str1.Equals(str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

    (3)?
    //语法 Equals(str1,str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

    24、IndexOf() 、LastIndexOf()
    查找字串中指定字W或字串首次Q最后一ơ)出现的位|?q回索引|如:
    str1.IndexOf("?)Q?//查找“字”在str1中的索引|位置Q?
    str1.IndexOf("字串")Q?/查找“字东y的W一个字W在str1中的索引|位置Q?
    str1.IndexOf("字串",3,2)Q?/从str1W?个字WvQ查?个字W,查找“字东y的W一个字W在str1中的索引|位置Q?

    25、Insert()
    在字串中指定索引位插入指定字W。如Q?
    str1.Insert(1,"?);在str1的第二个字符处插入“字”,如果str1="中国"Q插入后为“中字国”;

    26、PadLeft()、PadRight()
    在字串左Q或叻I加空格或指定char字符Q字串辑ֈ指定长度Q如Q?
    <%
    string str1="中国?;
    str1=str1.PadLeft(10,'1'); //无第二参Cؓ加空?
    Response.Write(str1); //l果为?111111中国人?Q?字串长ؓ10
    %>

    27、Remove()
    从指定位|开始删除指定数的字W?
    字串Ҏ一般都? if(str1==str2){ } , 但还有别的方?

    1?
    string str1; str2
    //语法: str1.EndsWith(str2); __字串str1是否以字串str2l尾,q回布尔??
    if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"l束?); }

    2?
    //语法:str1.Equals(str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

    3?
    //语法 Equals(str1,str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

    IndexOf()
    查找字串中指定字W或字串首次出现的位|?q首索引|如:
    str1.IndexOf("?)Q?//查找“字”在str1中的索引|位置Q?
    str1.IndexOf("字串")Q?/查找“字东y的W一个字W在str1中的索引|位置Q?
    str1.IndexOf("字串",3,2)Q?/从str1W?个字WvQ查?个字W,查找“字东y的W一个字W在str1中的索引|位置Q?

    1.9 取中文日期显C——年月日时分
    string strY=currentTime.ToString("f"); //不显C秒

    1.10 取中文日期显C_q月
    string strYM=currentTime.ToString("y");

    1.11 取中文日期显C_月日
    string strMD=currentTime.ToString("m");

    1.12 取当前年月日Q格式ؓQ?003-9-23
    string strYMD=currentTime.ToString("d");

    1.13 取当前时分,格式为:14Q?4
    string strT=currentTime.ToString("t");
    更新一下, 上面不能~辑Q?

    c#.net函数和方法集(大家一h加啊)

    1、DateTime 数字?
    System.DateTime currentTime=new System.DateTime();
    1.1 取当前年月日时分U?
    currentTime=System.DateTime.Now;
    1.2 取当前年
    int q?currentTime.Year;
    1.3 取当前月
    int ?currentTime.Month;
    1.4 取当前日
    int ?currentTime.Day;
    1.5 取当前时
    int ?currentTime.Hour;
    1.6 取当前分
    int ?currentTime.Minute;
    1.7 取当前秒
    int U?currentTime.Second;
    1.8 取当前毫U?
    int 毫秒=currentTime.Millisecond;
    Q变量可用中文)

    1.9 取中文日期显C——年月日时分
    string strY=currentTime.ToString("f"); //不显C秒

    1.10 取中文日期显C_q月
    string strYM=currentTime.ToString("y");

    1.11 取中文日期显C_月日
    string strMD=currentTime.ToString("m");

    1.12 取中文年月日
    string strYMD=currentTime.ToString("D");
    'www.knowsky.com
    1.13 取当前时分,格式为:14Q?4
    string strT=currentTime.ToString("t");

    1.14 取当前时_格式为:2003-09-23T14:46:48
    string strT=currentTime.ToString("s");

    1.15 取当前时_格式为:2003-09-23 14:48:30Z
    string strT=currentTime.ToString("u");

    1.16 取当前时_格式为:2003-09-23 14:48
    string strT=currentTime.ToString("g");

    1.17 取当前时_格式为:Tue, 23 Sep 2003 14:52:40 GMT
    string strT=currentTime.ToString("r");

    1.18获得当前旉 n 天后的日期时?
    DateTime newDay = DateTime.Now.AddDays(100);

    2、Int32.Parse(变量) Int32.Parse("帔R")
    字符型{?转ؓ32位数字型

    3?变量.ToString()
    字符型{?转ؓ字符?
    12345.ToString("n"); //生成 12,345.00
    12345.ToString("C"); //生成 K?2,345.00
    12345.ToString("e"); //生成 1.234500e+004
    12345.ToString("f4"); //生成 12345.0000
    12345.ToString("x"); //生成 3039 (16q制)
    12345.ToString("p"); //生成 1,234,500.00%

    4、变?Length 数字?
    取字串长度:
    如: string str="中国";
    int Len = str.Length ; //Len是自定义变量Q?str是求的字串的变量名

    5、System.Text.Encoding.Default.GetBytes(变量)
    字码转换 转ؓ比特?
    如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
    然后可得到比牚w度:
    len = bytStr.Length;

    6、System.Text.StringBuilder("")
    字符串相加,Q?h不是也一PQ?
    如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
    sb.Append("中华");
    sb.Append("人民");
    sb.Append("共和?);

    7、变?Substring(参数1,参数2);
    截取字串的一部分Q参?为左起始位数Q参?为截取几位?
    如:string s1 = str.Substring(0,2);

    8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
    取远E用户IP地址

    9、穿q代理服务器取远E用L实IP地址Q?
    if(Request.ServerVariables["HTTP_VIA"]!=null){
    string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    }else{
    string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
    }

    10?Session["变量"];
    存取Session|
    如,赋| Session["username"]="布什";

    取| Object objName=Session["username"];
    String strName=objName.ToString();
    清空Q?Session.RemoveAll();

    11、String str=Request.QueryString["变量"];
    用超链接传送变量?
    如在M中链接:<a href=Edit.aspx?fbid=23>点击</a>
    在Edit.aspx中取|String str=Request.QueryString["fdid"];

    12、DOC对象.CreateElement("新徏节点?);
    创徏XML文档新节?

    13、父节点.AppendChild(子节?Q?
    新建的子节点加到XML文档父节点下

    14?父节?RemoveChild(节点);
    删除节点

    15、Response
    Response.Write("字串")Q?
    Response.Write(变量)Q?
    向页面输出?

    Response.Redirect("URL地址"Q;
    跌{到URL指定的页?

    16、char.IsWhiteSpce(字串变量Q位?——逻辑?
    查指定位|是否空字符Q?
    如:
    string str="中国 人民";
    Response.Write(char.IsWhiteSpace(str,2)); //l果为:True, W一个字W是0位,2是第三个字符?

    17、char.IsPunctuation('字符') --逻辑?
    查字W是否是标点W号
    如:Response.Write(char.IsPunctuation('A')); //q回QFalse

    18?int)'字符'
    把字W{为数字,查代码点Q注意是单引受?
    如:
    Response.Write((int)'?); //l果Z字的代码Q?0013

    19?char)代码
    把数字{为字W,查代码代表的字符?
    如:
    Response.Write((char)22269); //q回“国”字?

    20?Trim()
    清除字串前后I格

    21 、字串变?Replace("子字?,"替换?)
    字串替换
    如:
    string str="中国";
    str=str.Replace("?,"?); //国字换为央?
    Response.Write(str); //输出l果为“中央?

    再如Q(q个非常实用Q?

    string str="q是<script>脚本";
    str=str.Replace("<","<font><</font>"); //左括h换ؓ<font> ?< ?</font> Q或换ؓ<Q但估计lXML存诸后,再提Z会还原)
    Response.Write(str); //昄为:“这?lt;script>脚本?

    如果不替换,<script>不昄Q如果是一D脚本,运行;而替换后Q脚本将不运行?
    q段代码的h值在于:你可以让一个文本中的所有HTML标签失效Q全部显C出来,保护你的h交互性的站点?
    具体实现Q将你的表单提交按钮脚本加上下面代码Q?
    string strSubmit=label1.Text; //label1是你让用h交数据的控gID?
    strSubmit=strSubmit.Replace("<","<font><</font>");
    然后保存或输出strSubmit?
    用此Ҏq可以简单实现UBB代码?

    22、Math.Max(i,j)
    取i与j中的最大?
    ?int x=Math.Max(5,10); // x取?10

    23、字串对比一般都? if(str1==str2){ } , 但还有别的方?

    (1)?
    string str1; str2
    //语法: str1.EndsWith(str2); __字串str1是否以字串str2l尾,q回布尔??
    if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"l束?); }

    (2)?
    //语法:str1.Equals(str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

    (3)?
    //语法 Equals(str1,str2); __字串str1是否与字串str2相等,q回布尔?用法同上.

    24、IndexOf() 、LastIndexOf()
    查找字串中指定字W或字串首次Q最后一ơ)出现的位|?q回索引|如:
    str1.IndexOf("?)Q?//查找“字”在str1中的索引|位置Q?
    str1.IndexOf("字串")Q?/查找“字东y的W一个字W在str1中的索引|位置Q?
    str1.IndexOf("字串",3,2)Q?/从str1W?个字WvQ查?个字W,查找“字东y的W一个字W在str1中的索引|位置Q?

    25、Insert()
    在字串中指定索引位插入指定字W。如Q?
    str1.Insert(1,"?);在str1的第二个字符处插入“字”,如果str1="中国"Q插入后为“中字国”;

    26、PadLeft()、PadRight()
    在字串左Q或叻I加空格或指定char字符Q字串辑ֈ指定长度Q如Q?
    <%
    string str1="中国?;
    str1=str1.PadLeft(10,'1'); //无第二参Cؓ加空?
    Response.Write(str1); //l果为?111111中国人?Q?字串长ؓ10
    %>

    27、Remove()
    从指定位|开始删除指定数的字W?
    <%
    string str1="我是萨达姆的崇拜者之一";
    Response.Write(str1.Remove(5,4)); //l果为“我是萨辑֧之一?
    %>



    ]]>
    最新官方ASP.net教程http://m.tkk7.com/zgghc/articles/93113.html牧月?/dc:creator>牧月?/author>Thu, 11 Jan 2007 03:39:00 GMThttp://m.tkk7.com/zgghc/articles/93113.htmlhttp://m.tkk7.com/zgghc/comments/93113.htmlhttp://m.tkk7.com/zgghc/articles/93113.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/93113.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/93113.html阅读全文

    ]]>
    十天学会ASP.nethttp://m.tkk7.com/zgghc/articles/93104.html牧月?/dc:creator>牧月?/author>Thu, 11 Jan 2007 03:13:00 GMThttp://m.tkk7.com/zgghc/articles/93104.htmlhttp://m.tkk7.com/zgghc/comments/93104.htmlhttp://m.tkk7.com/zgghc/articles/93104.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/93104.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/93104.html 十天学会ASP.net之第一?br />我认为ASP.NET比ASP隑־多,希望大家做好准备。难隑֜实现同一个效果有很多ҎQ大家或怼疑惑。十天学会系列教E会清晰的写出各U方法,让大家能一点坎块在ASP里面Q大家几乎都是用VBQ数据库嘛,也无非是SQL和ACCESS。在ASP.NET里面Q数据库q是q两个但是常用的语言多了一个C#Q也是微软推荐的语言Qؓ.NETq_定制的语a。这样ASP.NET有四种l合QVB+ACCESSQVB+SQLQC#+ACCESSQC#+SQLQ本教程会用C#+ACCESSQ兼֛U来写,让大家对ASP.NET有一个全面的认识。虽然说学习ASP.NET不需要Q何ASP基础Q但是我觉得如果大家ASP不会Q还是先看一下【十天学会ASP教程】,大家所需要了解的不是ASP的程序怎么写,而是怎么构徏服务器,怎么使用HTML表单Q同时对SQL语句有一个基和理解,因ؓ在本文里我不会将一些基的东ѝ?
    废话不多_开始我们第一天的学习Q?br />学习目的Q调试出安装环境
        我要x一点,操作pȝq2000Q如果说要学习一个网l语aq不肯多装一个操作系l的话,那我看也不要学习了?br />    先到|上下蝲一个MDAC(要是2.7以上的版本才?Q然后安装,安装以后或许会重新启动一ơ?br />    然后再下载一?NET FRAMEWORK SDKQ安装以后会在控刉杉K面的理工具里面多两个东西,q个不用理睬他,我们要用的q是原来的INTERNET服务理器。打开它按照ASP教程里面的调试方法徏立一个目录,建立一个EXAMPLE1.ASPXQ然后用C本打开q个文g在里面输?/font>

    <script language="c#" runat="server">
    void Page_Load()
    {
    Response.Write("Hello World!");
    }
    </script>
     

    <script language="vb" runat="server">
    sub page_load()
    response.write("Hello World!")
    end sub
    </script>

        然后用本地访问,查看l果Q?/font>

    在这里我要说明两点:1、我的示例文件L有A和B分别是用C#和VB写的Q演C的囄qC#那一U的Q都一样嘛Q教E里面代码也是写两种?lt;hr>分割开Q大家可以比较一下?、我写教E的时候用的都是记事本来编写APS.NET大家也可以安装VS.NET来编写不qv步还是用C本比较好Q因为可以看的更加透彻一炏V?br />今天p到这里,明天说一下C#的基本语法?br />十天学会ASP.net之第二天
    学习目的Q掌握C#的基本知?br />一、定义变量:
    string strExample; 字符?"aaa")
    char chrExample; 字符('a')
    bool blnExample; Bool?true/false)
    DataTime datExample; 日期?"09/19/2002")
    int intExample; 整数(32位有W号整数)
    double dblExample; 点?64位双_ֺ点?
    二、各U运:
    = 赋D?
    + 加法q算
    - 减法q算
    * 乘法q算
    / 除法q算
    % 取模q算
    && 逻辑And
    || 逻辑Or
    ! 逻辑Not
    三、各U结构:
    if(条g)
    {
    }
    else
    {
    }
    switch(条g)
    {
    case option1:
        break;
    case option2:
        break;
    }
    for(int i=1;i<=10;i++)//特别注意q里面是分号
    {
    }
    while(条g)
    {
    }
    do
    {
    }while(条g);
    四、注意事:
    1、用习惯VB的h很容易漏了语句末分号Q?br />2、用习惯VB的h很随便用变量但是不xQ这在C#默认情况下是不允许的Q?br />3、在向函C递参数的时候要用圆括号QResponse.Write "aa";是不允许的?br />我说的这点几乎称不上是在说一U语aQ一U语a的学习不仅仅需要学习语法,q需要学习语a特色Q希望大家有I是买一本C#的书来好好研I一下C#作ؓ一U新的语a的特性吧。今天就说到q里Q明天说一下WEB控g?br />十天学会ASP.net之第三天
    学习目的Q掌握WEB控g的?一)
        或许你会问,Z么需要WEB控gQWEB控间好像VB里面的控_可以在程序的M地方引用Q修Ҏ有属性,有了它的配合才能完成代码分离。想一下,如果q是以前的HTML控间Q我们当我们需要在某一个地ҎCZD|据库的内Ҏ不是只有?lt;%= %>q样势必在HTML包含了程序的代码块,p不到分离代码和界面的目的了?br />    或许你还会问Qؓ什么要代码分离那?原因很简单,不是每一个程序员都是合格的网设计师Q如果我们需要修改代码的时候会破坏|页设计师原来的讑֮Q是不是不方侉KQ程序代码和HTML代码混合在一起对于程序员来说也不方便修改代码。当Ӟ我们的网设计师也需要学习一点WEB控间的知识?
        下面来一个一个介l:
    一、Label控gQ?br />主要属性:
    Text 标签所昄的文?br />范例Q?lt;asp:Label id="lblMessage" Text="aaa" runat="server"/>
    需要注意的是我们不能遗漏runat="server"字样Q还有所有的WEB控g都要包含?lt;form runat="server"></form>中间
    下面看一个完整的例子Q在E序里面修改Label的Text属性,以此改变|页的显C?br /><script runat="server" language="c#">
    void Page_Load()
    {
    lblMessage.Text="Hello World!";
    }
    </script>
    <html>
    <head><title>Label.aspx</title></head>
    <body>
    <form runat="server">
    <asp:Label id="lblMessage" runat="server"/>
    </form>
    </body>
    </html>
     
    --------------------------------------------------------------------------------

    <script runat="server" language="vb">
    sub Page_Load
    lblMessage.Text="Hello World!"
    end sub
    </script>
    <html>
    <head><title>Label.aspx</title></head>
    <body>
    <form runat="server">
    <asp:Label id="lblMessage" runat="server"/>
    </form>
    </body>
    </html>
    二、TextBox控gQ?br />主要属性:
    Text 控g昄的文本;
    MaxLength 文本框可以添加的最多的字符敎ͼ多行文本框无效)Q?br />ReadOnly 只读Q?br />TextMode 有下面几个有效?MultiLine,Password,SingleLineQ?br />Rows 指定文本框的垂直寸
    三、Button控gQ?br />有三U:Button 标准的表单按钮;ImageButton 昄囑փ的表单按钮;LinkButton 昄作ؓ链接样子Button
    Button基本上就是Text属性来讄按钮上面的文字;
    ImageButton基本上就是ImageUrl来设|按钮上图象的地址QAlternativeText 在浏览器不支持图片的时候显C的文字Q?br />LinkButton基本上就是Text属性来讄按钮上的文字Q?br />他们三者共同的属性就是CausesValidation=true/false来设|按钮提交的表单是不是被验(后面说到检验控Ӟ
    他们三者共同的Ҏ是OnClick是点击按钮的时候触发的函数Q下面D一个例子:
    <script runat="server" language="c#">
    void btnCounter_OnClick(object sender,EventArgs e)
    {
    btnCounter.Text="Clicked";
    }
    </script>
    <html>
    <head><title>Label.aspx</title></head>
    <body>
    <form runat="server">
    <asp:Button Text="UnClicked" OnClick="btnCounter_OnClick" id="btnCounter" runat="server"/>
    </form>
    </body>
    </html>
     
    --------------------------------------------------------------------------------

    <script runat="server" language="vb">
    sub btn_COunter_OnClick(s as object,e as eventargs)
    btnCounter.Text="Clicked"
    end sub
    </script>
    <html>
    <head><title>Label.aspx</title></head>
    <body>
    <form runat="server">
    <asp:Button Text="UnClicked" OnClick="btnCounter_OnClick" id="btnCounter" runat="server"/>
    </form>
    </body>
    </html>
    今天pq三个控Ӟ明天l箋?br />十天学会ASP.net之第四天
    学习目的Q掌握WEB控g的??
        首先我要说明Q我q十天教E也只是一个让大家对ASP.NET有一个认识而已Q我也蟩q了很多东西。网上有很多人在责骂我写的教E,认ؓ十天什么都学不会,看了我的教程q是什么都不会Q我想他们或许是q高估计了我的教E。外面有很多书,关于ASP和ASP.NET的,我就是看外面的书学会的。我所要做的就是希望大家能看了我的教程以后觉得ASP和ASP.NET不是学不会的东西然后有信心去学会它。我惛_习还是靠自己的,外面每一本书也有自己写的不周到的地方Q关键还需要自q实践加上探烦?br />首先来说一下表单的验证控gQ以前我们做表单验证Q如果是客户端的javascriptQ不能做到美观统一Q而且q可以通过直接在浏览器h表单来屏蔽;如果我们做服务器端验证,又会发现让检验结果在前台反映也是很麻烦的事情。现在好了,ASP.NET提供的很多检验控件让我们不需要考虑是客L验还是服务器端检验,让我们不需要考虑是怎么输出验结果?br />看一下检验表单控件是不是填写了的验控件先Q?br /><asp:textbox id="username" runat="server" CSSclass="textbox"/>
    <asp:requiredfieldvalidator controltovalidate="username" display="dynamic" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="请填? runat="server"/>
    controltovalidate是你想验的控g的IDQ默认情况下不显C错误消息,地方也会被保留,如果使用了display="dynamic" 那么不显C错误消息的地方不会被空出; forecolor="#ff0000" font-name="宋体" font-size="9pt" 是讑֮错误消息字体的颜Ԍ字体Q大的Qtext="请填? 是当没有填写内Ҏ候显C的错误消息Q别忘记最后的runat="server"。现在这个检验控件是攑֜了textbox的后面,那么错误消息也在textbox后面昄Q也可以攑֜其他地方?br />再看一下比较表单控件的数据与另外一个数据的验控Ӟ
    <asp:textbox id="password1" runat="server" textmode="password" cssclass="textbox"/>
    <asp:requiredfieldvalidator controltovalidate="password1" display="dynamic" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="请填? runat="server"/>
    q里是第一个需要用户填写的密码?br />我们l常会再讄一个密码框让用户再填写一ơ:
    <asp:textbox id="password2" runat="server" textmode="password" cssclass="textbox"/>
    <asp:requiredfieldvalidator controltovalidate="password2" display="dynamic" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="请填? runat="server"/>
    <asp:comparevalidator controltovalidate="password2" controltocompare="password1" display="dynamic" operator="equal" forecolor="#ff0000" font-name="宋体" font-size="9pt" text="认p|" runat="server"/>
    controltocompare="password1" 是需要比较的控gQoperator="equal" 是讑֮比较操作是:是否相等Q还有NotEqualQ不相等,LessThanQ少?GreaterThanQ大于,当不W合q个比较操作的时候显C错误消息)?br />以前说到BUTTON控gCausesValidation=true/false来设|按钮提交的表单是不是被验也是q里的几个检验控Ӟ如果CausesValidation=true的话按下按钮׃首先是不是都通过了检验控件的验?br />下面再说两点Q?br />一、每一个可以显C的控g都有是不是显C的属性,比如username.Visible=false;是隐藏了前面的username控gQ还有就是如果要Ҏ件应用CSS的话p么写Qcssclass=""Q而不是以前HTML中的class=""?br />二、所有WEB控g都要包含?lt;form runat="server"></form>中,否则׃出错?br />今天到此结束,Ll往后面看,下次开始就要说ADO.NET了?br />十天学会ASP.net之第五天
    学习目的Q学会连接两U数据库
    对于ASP来说Q我们常用的数据库无非是ACCESS和SQL SERVERQ对于ASP.NET也是Q不qASP.NET对于SQL SERVER有专门的q接lg而不推荐用OLE DB?br />首先看一下ACCESS的连接数据库q打开Q?br />string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
    strConnection+=Server.MapPath("*.mdb"); //*是数据库的名字
    OleDbConnection objConnection=new OleDbConnection(strConnection);
    objConnection.Open();
     
    --------------------------------------------------------------------------------
    dim objConnection as OleDbConnection
    objConnection=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("*.mdb"))
    objConnection.Open()
    下面再看一下SQL SERVER的连接数据库q打开Q?br />string strConnection="server=数据库连?uid=用户?pwd=密码;database=数据库名?;
    SqlConnediob objConnection=new SqlCOnnection(strConnection);
    objConnection.Open();
     
    --------------------------------------------------------------------------------
    dim objConnection as SqlConnectiom
    objConnection=new SqlConnection("server=数据库连?uid=用户?pwd=密码;database=数据库名?)
    objConnection.Open()
    实际上,在大多数地方SQL SERVER和ACCESS的区别除了连接语句,其他定义语句也就是SQL××和OLEDB××的区?br />另外Q如果是ACCESS数据库的话在ASPX文g的开头需要包括下列语句:
    <
    %@Import Namespace="System.Data"%>
    <
    %@Import Namespace="System.Data.OleDb"%>
    如果是SQL SERVER则需要包括以下语句:
    <
    %@Import Namespace="System.Data"%>
    <
    %@Import Namespace="System.Data.SqlClient"%>
    今天p到这里,明天开始讲数据库的d?br />十天学会ASP.net之第六天
    学习目的Q学会读取数据库
    有的|友_不会C#Q在ASP.NET里面q是选择VB.NETQ这个我不反对,但是我觉得既然是学习新的东西Q就不要在意有多是新的。实际上C#׃般的操作来说Q只是区分大写和多了一个分可两点与VB.NET不同其他都差不多啊。在ASP里面我们d数据q接用RECORDSETQ然后在HTML代码里面I插<%= %>可以显CZQ但是ASP.NET讲究的是代码分离Q如果还是这hC数据就不能代码分离了。所以我们有两种ҎQ如果是d一条记录的数据或者不多的数据Q我们用DATAREADER采集数据Q然后赋值给LABEL控g的Text属性即可;如果是读取大量数据我们就采用DATAGRID?br />今天我们来说一下DATAREADERQ?br />string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
    strConnection+=Server.MapPath(strDb);
    OleDbConnection objConnection=new OleDbConnection(strConnection);
    OleDbCommand objCommand = new OleDbCommand("q里是SQL语句" , objConnection);
    objConnection.Open();
    OleDbDataReader objDataReader=objCommand.ExecuteReader();
    if(objDataReader.Read())
    {
    oicq.Text=Convert.ToString(objDataReader["useroicq"]);
    homesite.Text=Convert.ToString(objDataReader["usersite"]);
    face.SelectedItem.Text=Convert.ToString(objDataReader["userface"]);
    }
    大家可以看到我们首先是连接数据库然后打开Q对于select的命令,我们x一个OleDbCommand来执行之Q然后再x一个OleDbDataReaderQ来d数据Q用的是ExecuteReader()QobjDataReader.Read()开始读取了Q在输出的时候我们要注意Text属性接受的只能是字W串Q所以我们要把读出的数据都{化ؓ字符串才行?br />转换变量cd函数Q?br />转换为字W串QConvert.ToString()
    转换为数字:Convert.ToInt64()QConvert.ToInt32()QConvert.ToInt16() 是按照数字位数由长到?br />转换为日期:Convert.ToDateTime()
     
    --------------------------------------------------------------------------------
    dim objConnection as OleDbConnection
    dim objCommand as OleDbCommand
    dim objDataReader as OleDbDataReader
    objConnection=new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath(strDb))
    objCommand=new OleDbCommand("q里是SQL语句" , objConnection)
    objConnection.Open()
    objDataReader=objCommand.ExecuteReader()
    if objDataReader.Read()
    oicq.Text=Convert.ToString(objDataReader["useroicq"])
    homesite.Text=Convert.ToString(objDataReader["usersite"])
    face.SelectedItem.Text=Convert.ToString(objDataReader["userface"])
    end if
    其实大家比较一下C#和VB的语法,会发觉用C#g更加单,教程里面我侧重C#Q对于VB的代码我׃解释了?br />下面说一下如果代码是dSQL数据库,我们q样来{?br />1、把代码开始的
    <
    %@Import Namespace="System.Data"%>
    <
    %@Import Namespace="System.Data.OleDb"%>
    修改?br /><
    %@Import Namespace="System.Data"%>
    <
    %@Import Namespace="System.Data.SqlClient"%>
    2、把代码里面所有申明的对象OleDb××变ؓSql××p么简?br />你甚臛_以用替换所有来解决Q所以今后我讲不再列出Sql Server的代码了?br />今天p到这里,明天开始说数据的添加、删除、修攏V?br />十天学会ASP.net之第七天
    学习目的Q学会添加删除修改记?br />以前我们在ASP中不是dq是删除记录或者用SQL语句加上EXECUTE()或者就是直接用RECORDSET的NEW、DELETE、UPDATE{方法来d删除修改记录。在ASP.NET里面我们采用SQL语句加上COMMAND对象来执行SQL语句的方法来d删除修改记录。这比上ơ说的读取记录还单。实际上只有一点区别,把ExecuteReader()修改为ExecuteNonQuery()卛_Q因为我们不需要返回值啊?br />string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
    strConnection+=Server.MapPath(strDb);
    OleDbConnection objConnection=new OleDbConnection(strConnection);
    OleDbCommand objCommand = new OleDbCommand("q里是SQL语句" , objConnection);
    objConnection.Open();
    OleDbDataReader objDataReader=objCommand.ExecuteNonQuery();
     
    --------------------------------------------------------------------------------
    dim objConnection as OleDbConnection
    dim objCommand as OleDbCommand
    objConnection=new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath(strDb))
    objCommand=new OleDbCommand("q里是SQL语句" , objConnection)
    objConnection.Open()
    objDataReader=objCommand.ExecuteNoQuery()
    下面再D例子说明一下SQL语句QACCESSQ:
    d记录Q?insert int
    o 表名 (字段1Q字D?) values (字符?Q字W串2) where 条g
    删除记录Q?delete from 表名 where 条g
    修改记录Q?update 表名 set 字段1=××Q字D?=×× where 条g
    需要特别注意,如果是Sql Server删除记录是delete 表名Q不需要再加from了?
    今天p到这里了Q明天说ASP.NET里面最著名的DATAGRID?br />十天学会ASP.net之第八天
    学习目的Q初步掌握DATAGRID的?br />以前在ASP中,我们昄大批量数据经怋用@环读取记录集的方式,在表g插入代码来显C,循环的是<tr>Q如果是分页q需要自己制作,如果排序更加复杂Q在ASP.NET中就好了Q一切工作都可以让DATAGRID来做?br />首先看一下DATAGRID的样式方面的属?br />BackImageUrl="" 背景囄
    CellSpacing="" 单元格间?br />CellPadding="" 单元格填?br />CSSClass="" 使用的CSS样式
    DATAGRID可以自动用表中的字段名放在显C的记录的头部来表示各个单元格所代表的意义,用ShowHeader="true/false"来控制是不是昄Q在大多数情况下我们是不需要这个功能的Q因为我们数据库中的字段名大多是英文的,而我们想在页面输出的大多是中文名字?br />下面看一下显C数据库内所有记录,几行代码:

    <script runat="server" language="c#">
    void Page_Load()
    {
    string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
    strConnection+=Server.MapPath("guestbook.mdb");
    OleDbConnection objConnection=new OleDbConnection(strConnection);
    OleDbCommand objCommand1 = new OleDbCommand("select * from guestbook",objConnection);
    objConnection.Open();
    dgrdMain.DataSource=objCommand1.ExecuteReader();//dgrdMain是下面的DATAGRID的ID
    dgrdMain.DataBind();
    objConnection.Close();
    }
    </script>
    <html>
    <body>
    <asp:DataGrid
    id="dgrdMain"
    cellpadding="1"
    showheader="true"
    borderwidth="0"
    runat="server"
    />
    </body>
    </html>
    至于VB的版本,q次大家自己来试试吧Q)
    假设数据库是三个字段Qid,aa,bb
    昄的样子就如下Q?/font>

    id aa bb
    1 werwe rewrwe
    2 werwe rewrwe
     
    我们一定觉得这U显CZ满意Q我们有两种昄的方式(需要包括在<columns></columns>中间Q:
    一、默认的列,我们可以选择不输出所有的字段q可以安排顺序:
    <asp:BoundColumn DataField="惌昄的字D名">
    比如说我们想按照bb,aa来输个表Q我们这么写
    <asp:DataGrid
    id="dgrdMain"
    cellpadding="1"
    showheader="true"
    autogeneratecolumns="false"
    borderwidth="0"
    runat="server">
    <columns>
    <asp:boundcolumn datafield="bb"/>
    <asp:boundcolumn datafield="bb"/>
    </columns>
    </asp:datagrid>
    注意使用了autogeneratecolumns="false"以后DATAGRID׃会自动输出所有字D了?br />二、以模板列,我们可以定制每一个单元格的样式:
    <asp:TemplateColumn>
    <itemTemplate>
    中间是一个表|x么样就怎么?br /></itemTemplate>
    </asp:DataGrid>
    或许你们要说怎么在表g输出代码那,可以使用<%# DataBinder.Eval(Container.DataItem,"字段?).ToString()%>
    下面看一个例子,我们所要做的就是把aa,bb两个字段攑֜一个单元格内显C,好像下面一P

    1 werwe
    rewrwe 
    2 werwe
    rewrwe 

    我们q样写代码:
    <asp:DataGrid
    id="dgrdMain"
    cellpadding="1"
    showheader="false"
    autogeneratecolumns="false"
    borderwidth="0"
    runat="server">
    <columns>
    <asp:boundcolumn datafield="ii"/> 首先使用默认的显C方式显CID
    <asp:TemplateColumn> 再用模板来昄后面一列(由AA,BBq列l成Q?br /><itemTemplate>
    <table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr>
    <td><%# Container.DataItem("aa")%></td>
    </tr>
    <tr>
    <td><%# Container.DataItem("bb")%></td>
    </tr>
    </table>
    </itemTemplate>
    </asp:DataGrid>
    </columns>
    </asp:datagrid>
    今天p到这里,明天我们来看一下DATAGRID的分|C等功能
    十天学会ASP.net之第九天
    学习目的Q学会用DATAGRID分页昄
    虽然说DATAGRID的分|C效率不怎么高,但是不管怎么_它是最方便的分|C,对于做一个留a还是相当简单实用的。对于启用分功能还有一个重要要求,只能在DATADRID控g的数据源实现了ICOLLECTION接口的情况下才能启用分页功能Q而DATAREADER没有q个接口Q所以必M用DATATABLE来代ѝ?br /><script runat="server" language="c#">
    void Page_Load()
    {
    string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
    strConnection+=Server.MapPath("guestbook.mdb");
    OleDbConnection objConnection=new OleDbConnection(strConnection);
    OleDbDataAdapter objDataAdapter=new OleDbDataAdapter("select * from guestbook",objConnection);
    DataSet objDataSet=new DataSet();
    objDataAdapter.Fill(objDataSet);
    dgrdMain.DataSource=objDataSet;
    dgrdMain.DataBind();
    }
    void dgrdMain_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
    {
    dgrdMain.CurrentPageIndex = e.NewPageIndex;
    DataBind();
    }
    </script>
    <html>
    <body>
    <asp:DataGrid
    id="dgrdMain"
    cellpadding="1"
    showheader="true"
    borderwidth="0"
    allowpaging="true" 启用分页功能
    pagesize="3" 每一|CZ条记?br />onpageindexchanged="dgrdMain_pageindexchanged " 调用W×页的函CؓdgrdMain_PageIndexChanged()
    runat="server"
    />
    </body>
    </html>
     
    --------------------------------------------------------------------------------
    <script runat="server" language="vb">
    subPage_Load
    dim objConnection as OleDbConnection
    dim objDataAdapter as OleDbDataAdapter
    dim objDataSet as DataSet
    objConnection=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("guestbook.mdb"))
    objDataAdapter=new OleDbDataAdapter("select * from guestbook",objConnection)
    objDataSet=new DataSet
    objDataAdapter.Fill(objDataSet)
    dgrdMain.DataSource=objDataSet
    dgrdMain.DataBind()
    end sub
    sub dgrdMain_PageIndexChanged(sender as object,e as datagridpagechangedeventargs)
    dgrdMain.CurrentPageIndex = e.NewPageIndex
    DataBind
    end sub
    </script>
    <html>
    <body>
    <asp:DataGrid
    id="dgrdMain"
    cellpadding="1"
    showheader="true"
    borderwidth="0"
    allowpaging="true" 启用分页功能
    pagesize="3" 每一|CZ条记?br />onpageindexchanged="dgrdMain_pageindexchanged " 调用W×页的函CؓdgrdMain_PageIndexChanged()
    runat="server"
    />
    </body>
    </html>
    q样是最单的分页Q我们可以用参数pagestyle-mode="nextprev/numericpages"来设定是昄上一c下一|式还是直接选择面的数字方式来实现面跌{。如果是前者我们可以用pagestyle-nextpagetext来设定包含下一链接的文本Q用pagestyle-prevpagetext来设定包含上一链接的文本Q如果是后者我们可以用PagerStyle-PageButtonCount来设定在使用省略号之前显C的面~号数量Q默认是10Q?br />今天p到这里,明天说一下SESSION和COOKIE?br />十天学会ASP.net之第十天
    学习目的Q学会SESSION和COOKIE的?br />在各个网间的变量传递和一些记录用L登陆信息要用到SESSION和COOKIE。在ASP.NET中用COOKIE比ASP中稍微麻烦一点,因ؓ我们要申明变量?br />首先看一下SESSION的用,基本和ASP差不?br />写入一个SESSIONQ?br />Session["username"])="aa";

    --------------------------------------------------------------------------------
    Session("username")="aa"
    d一个SESSINNQ?
    string username= Session["username"];
    --------------------------------------------------------------------------------
    dim username=Session("username")
    再来看一下COOKIE的写入:
    DateTime dt=DateTime.Now; //需?lt;
    %@Import Namespace="System"%>Q得到当前时?br />HttpCookie mycookie=new HttpCookie("logname");//x新的COOKIE变量
    mycookie.Value="aa";//赋?br />mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1));//讑֮q期旉??br />Response.Cookies.Add(mycookie1);//写入COOKIE
     
    --------------------------------------------------------------------------------
    dim dt as DateTime
    dt=DataTime.Now
    dim mycookie as HttpCookie
    mycookie=new HttpCookie("logname")
    mycookie.Value="aa"
    mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1))
    Response.Cookies.Add(mycookie1)
    看一下COOKIE的读取:
    HttpCookie mycookie=Request.Cookies["username"];
    string username=mycookie.Value;

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

    dim mycookie as HttpCookie
    mycookie=Request.Cookies["username"]
    dim string=mycookie.Value
    到此《十天学会ASP.NET》结束了Q时间仓促,q请大家原谅写的不全Q实际上我只是带大家入门Q学会还要靠自己啊?/font>

     



    ]]>
    C#入门http://m.tkk7.com/zgghc/articles/64779.html牧月?/dc:creator>牧月?/author>Mon, 21 Aug 2006 05:49:00 GMThttp://m.tkk7.com/zgghc/articles/64779.htmlhttp://m.tkk7.com/zgghc/comments/64779.htmlhttp://m.tkk7.com/zgghc/articles/64779.html#Feedback0http://m.tkk7.com/zgghc/comments/commentRss/64779.htmlhttp://m.tkk7.com/zgghc/services/trackbacks/64779.html

    ]]>
    在VB中调用CHM 帮助的几U方?/title><link>http://m.tkk7.com/zgghc/articles/63495.html</link><dc:creator>牧月?/dc:creator><author>牧月?/author><pubDate>Mon, 14 Aug 2006 07:47:00 GMT</pubDate><guid>http://m.tkk7.com/zgghc/articles/63495.html</guid><wfw:comment>http://m.tkk7.com/zgghc/comments/63495.html</wfw:comment><comments>http://m.tkk7.com/zgghc/articles/63495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zgghc/comments/commentRss/63495.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zgghc/services/trackbacks/63495.html</trackback:ping><description><![CDATA[在VB中调用CHM 帮助的几U方? 一个应用程序不论编制得如何完美Q在很多情况下用戯是会对如何用它提出问题? Visual Basic 提供了对两种不同帮助pȝ的支持:传统? Windows 帮助pȝ (WinHelp)和新? HTML 帮助QCHM帮助Q。当我们制作好帮助文件后Q就需要在E序的适当位置~写代码q行调用Q本文将讨论几种在程序中调用CHM帮助文g的方法? Ҏ一 使用F1键: q种Ҏ最单,只需如下代码卛_Q? Private Sub Form_Load() App.HelpFile = app.path & "\help.chm" '调用与主E序同目录下的help.chm帮助文gQ按F1键调? End Sub Ҏ? 使用SendKeysҎQ? Private Sub Form_Load() App.HelpFile = app.path & "\help.chm" End Sub private Sub CmdHelp_Click() SendKeys "{F1}" '发送击键到zdH口 End Sub Ҏ? 使用Shell函数Q? private Sub CmdHelp_Click() Shell "hh.exe help.chm", vbNormalFocus 'help.chm为指定的帮助文gQ可包含路径? End Sub Ҏ? 使用HtmlHelp函数Q? 先声明如下APIQ? Option Explicit Private Declare Function HtmlHelpA Lib "hhctrl.ocx" (ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long) As Long 'hwndCaller指定调用者的H口QpszFile指定要调用的文gQuCommand是发送给 HtmlHelp的命令,dwData是uCommand的参数? 然后在过E中调用Q? private Sub CmdHelp_Click() dim i as string i = app.path & "\help.chm" '用变量i记录与主E序同目录下的help.chm帮助文g HtmlHelpA Form1.hWnd, i, 0, 0 End Sub Ҏ? 使用ShellExecute函数Q? 先声明如下APIQ? Option Explicit '声明API函数用于异步打开一个文? Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL = 1 然后在过E中调用Q? private Sub CmdHelp_Click() dim a as long Dim b As String b = App.Path & "\help.chm" '用变量b记录与主E序同目录下的help.chm帮助文g a = ShellExecute (0, "open", b, "", "", SW_SHOWNORMAL) End Sub 以上五种Ҏ各有优缺点,从代码的单上Ԍ使用W二U方法。从功能上讲Q徏议用第五种ҎQ因其不只用于打开CHM帮助文gQ还可用同样的格式打开、打印或查找一个文件或文档Q参见该API的说明资料)? <img src ="http://m.tkk7.com/zgghc/aggbug/63495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zgghc/" target="_blank">牧月?/a> 2006-08-14 15:47 <a href="http://m.tkk7.com/zgghc/articles/63495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://fsrongxing.com" target="_blank">Ƭ߹ۿ</a>| <a href="http://sdzsx.com" target="_blank">ɫþAVۺ</a>| <a href="http://henhenluc.com" target="_blank">91Ƶѹۿ</a>| <a href="http://ri9999.com" target="_blank">Ůһ</a>| <a href="http://6266tv.com" target="_blank">ɫˬŮС˵ѿ</a>| <a href="http://taoh2510.com" target="_blank">ҹƷѹۿ</a>| <a href="http://zgxxx.com" target="_blank">һ</a>| <a href="http://peipeixiu.com" target="_blank">avպƷþþþþa</a>| <a href="http://scdsrq.com" target="_blank">޹Ʒר</a>| <a href="http://6ork.com" target="_blank">ѴƬֻ߹ۿ</a>| <a href="http://zblinghang.com" target="_blank">Ůcaoѿ߿վ</a>| <a href="http://33sse.com" target="_blank">sssձ߹ۿ</a>| <a href="http://nxjyyj.com" target="_blank">Ļһ</a>| <a href="http://www-8908.com" target="_blank">һƵѹۿ</a>| <a href="http://hivzx.com" target="_blank">18ֹվ</a>| <a href="http://scycho.com" target="_blank">뾫Ʒþþ</a>| <a href="http://gayhh.com" target="_blank">jizzձ</a>| <a href="http://kingleadsw.com" target="_blank">һ߹ۿ</a>| <a href="http://127ht.com" target="_blank">ѹ18߹ۿ</a>| <a href="http://yutuzb.com" target="_blank">8090߹ۿѹۿ</a>| <a href="http://dd99com.com" target="_blank">ŮAëƬƵ</a>| <a href="http://langse3.com" target="_blank">96|</a>| <a href="http://777cc55.com" target="_blank">ۺĻ</a>| <a href="http://joob4s.com" target="_blank">þþþþ޾Ʒ</a>| <a href="http://www-741.com" target="_blank">ҹavƵ</a>| <a href="http://dukane1688.com" target="_blank">һVR</a>| <a href="http://0359puju.com" target="_blank">Ƶ</a>| <a href="http://z88d.com" target="_blank">椸Ƶۿ</a>| <a href="http://www-887234.com" target="_blank">һһƬѲ</a>| <a href="http://bjgelinhotel.com" target="_blank">˵va</a>| <a href="http://zfjhw.com" target="_blank">Ƶ߹ۿ</a>| <a href="http://www-070755.com" target="_blank">С˵ͼƬQVOD</a>| <a href="http://bovch.com" target="_blank">ѳҹƵ</a>| <a href="http://blcvs.com" target="_blank">޹Ʒһ </a>| <a href="http://popodino.com" target="_blank">ҰһƵ </a>| <a href="http://343dd.com" target="_blank">ҹƬAVƬ</a>| <a href="http://7a37.com" target="_blank">Ѹ弤Ƶ</a>| <a href="http://yijiazhiwei.com" target="_blank">ҹӰӴȫѹۿ</a>| <a href="http://023npxyy.com" target="_blank">޾Ʒɫ</a>| <a href="http://sdzsx.com" target="_blank">޾Ʒھþ</a>| <a href="http://lijieedu.com" target="_blank">þþƷĻվ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>