zoukankan      html  css  js  c++  java
  • Csharp日常笔记

      1.

     

     

          1.退出程序
                      this.Close();             //方法退关闭当前窗口。

          Application.Exit();       //方法退出整个应用程序。  (无法退出单独开启的线程)

          Application.ExitThread(); //释放所有线程   

          Environment.Exit(0);      //可以退出单独开启的线程

          2.从本窗口Form1点击按钮产生新窗口Form2
          Form2 f2 = new Form2();
          F2.Show();

          3.得到现在时间并显示在label1上
          Label1.Text=DateTime.Now.Hour+":"+DateTime.Now.Minute+":"+DateTime.Now.Second

          4.产生0到100的随机数
          int m=0;
          Random r = new Random();
          m=r.Next(0,100);

          5.改变窗口大小
          //把窗口的高变为100像素,宽不变
          this.Size=new Size(this.Size.Width,100);
          //把窗口的宽变为100像素,高不变
          this.Size=new Size(100,this.Size.Height);
          //把窗口的高和宽都变为100像素
          this.Size=new Size(100,100);

          6.改变控件的位置
          //改变按钮button1的位置到坐标为(100,100)处
          button1.Location=new Point(100,100);
          //改变文字label1的位置到坐标为(100,100)处
          label1.Location=new Point(100,100);

          7. 指定位置创建一个文件夹(创建D盘Folder文件夹为例)
          #需要导入Using System.IO
          Directory.CreateDirectory(@"D:Folder");

          8. 指定位置创建一个文件(以创建D盘test.txt为例)
          #需要导入Using System.IO
          FileStream fs= File.Create(@"D: est.txt");

          或

          FileSystem.FileOpen(1,"D: est.txt",Binary)
          FileSystem.FileClose(1)

          9. 复制一个文件到另一位置(以test.txt文件为例)
          #需要导入Using System.IO
          #其中有true表示test2.txt已经存在的话就覆盖
          File.Copy(@"D: est.txt",@"D: emp est2.txt",true);

          10. 移动文件(以test.txt为例)
          #需要导入Using System.IO
          File.Move(@"d: est.txt",@"d: emp est.txt");

          and

          My.Computer.FileSystem.CopyFile("d: est.txt","d: emp est.txt")

          11.检测当前操作系统信息显示到Label1上
          string os = System.Environment.OSVerion.ToString();
          Label1.Text="检测到您使用的操作系统是:"+os;

          或

          Label1.Text="检测到您使用的操作系统是:"+My.Computer.Info.OSVersion

          12.启动进程打开网页或者某个程序(打开百度首页为例)
          System.Diagnostics.Process.Start(@"http://www.baidu.com/");

          13.判断文件是否存在(以C盘test.txt为例)
          #需要引入 using System.IO;
          File.Exists(@"C: est.txt");
          返回true或者false;
          //判断可用
          if (File.Exists(@"C: est.txt"))
          {
          }

          14.弹出对话框
          //仅提示内容
          MessageBox.Show("提示内容");
          //标题和内容,以及图标
          MessageBox.Show("提示内容","标题",MessageBoxButtons.Yes,MessageBoxIcon.Information);

          15.判断用户是否点击了弹出的对话框中的确定/Ok/Yes,将判断结果显示在label1上
          DialogResult dr = MessageBox.Show("提示内容","标题",MessageBoxButtons.Yes,MessageBoxIcon.Information);
          if(dr==DialogResult.Yes)
          {
          label1.Text="你点击了对话框中的[Yes]";
          }

          16.为泛型赋值
          List<Int32> lst = new List<Int32> { };
          for (Int32 mm = 0; mm <= 100; mm++)
          { 
          lst.Add(mm);
          }

          17.

          关机 System.Diagnostics.Process.Start("shutdown", "-s -t 0");
          注销 System.Diagnostics.Process.Start("shutdown", "-l ");
          重启 System.Diagnostics.Process.Start("shutdown", "-r -t 0");

          18.某月有几天 DateTime.DaysInMonth(2012,1)

          19.按行写入数据到文本(以C盘test.txt为例)
          需要导入System.IO;
          FileStream fs = new FileStream(@"C: est.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); 
          StreamWriter sw = new StreamWriter(fs); 
          sw.WriteLine( "第一行 第二行 第三行" ); 
          sw.Flush(); 
          sw.Close(); 
          fs.Close();

          20..通过静态类跨窗体传递数据(以Form1通过dataPass.cs静态类传递数据到Form2为例)
          //构造静态类
          public static class dataPass
          { 
          public static String _isData;
          public static String isData 
          { 
          get { return _isData; } 
          set { _isData = value; } 
          } 
          }
          //在Form1中的一个按钮Button1上点击转到Form2
          private void Button1_Click_1(object sender, EventArgs e)
          { 
          //把Button1上的文字存入静态类
          dataPass._isData=Button1.Text;
          Form2 f2 = new Form2();
          f2.Show();
          }
          //在Form2加载的时候把数据传递到Form2的标题上显示
          private void Form2_Load(object sender, EventArgs e) 
          {
          this.Text=dataPass._isData;
          }

          或

    form1:  private void button1_Click(object sender, EventArgs e)        {            string aa = "aa";            Form2 form2 = new Form2(aa);            form2.ShowDialog();        }form2:   private string text;         public Form2(string str)        {            InitializeComponent();            text = str;        }         private void Form2_Load(object sender, EventArgs e)        {            label1.Text = text;

          }

          21. 获得某个文件夹中的所有文件名(以获得Images文件夹中的所有图片文件名为例)
          #需要引用using System.IO; 
          String Path="Images";
          List<string> files = null;
          string getFilesFilter = "*.jpg;*.jpeg;*.jpe;*.gif;*.bmp;*.png;";
          string[] arrFilter = getFilesFilter.Split(';');
          if (!string.IsNullOrEmpty(Path))
          {
          files = new List<string>();
          try
          {
          DirectoryInfo di = new DirectoryInfo("Images");
          for (int i = 0; i < arrFilter.Length; i++)
          {
          if (di.Exists)
          {
          foreach (FileInfo fileInfo in di.GetFiles(arrFilter[i]))
          {
          files.Add(fileInfo.FullName);
          if (files.Count > 50)
          break;
          }
          }
          }
          }
          catch (IOException) { }
          catch (ArgumentException) { }
          catch (SecurityException) { }
          }

          22. 剪切板操作(以textBox1中的文本为例)
          //放入剪贴板
          Clipboard.SetText(textBox1.Text); 
          //从剪切板取出文本
          textBox1.Text = Clipboard.GetText();

          23.获得系统某些特殊目录的路径
          //桌面
          string desktopPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
          //文档
          string documentPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
          //program Files
          string desktopPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles);

          24. 创建程序的桌面快捷方式(以C盘llyn23.exe为例)
          #需要添加引用 (com->Windows Script Host Object Model)
          #需要引入using IWshRuntimeLibrary;
          //得到桌面路径
          string DesktopPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop); 
          IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShellClass();
          IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(DesktopPath + "\llyn23快捷方式.lnk"); 
          shortcut.TargetPath = @"C:llyn23.exe"; 
          shortcut.Arguments = ""; 
          shortcut.Description = "llyn23快捷方式"; 
          shortcut.WorkingDirectory = @"C:";
          //设置图标
          shortcut.IconLocation = @"C:llyn23.exe,0"; 
          //设置热键
          shortcut.Hotkey = "CTRL+SHIFT+Z"; 
          shortcut.WindowStyle = 1; 
          shortcut.Save();

          25 获取屏幕宽度:

          this.Width = System.Windows.Forms.Screen.GetBounds(this).Width;

          //获得当前屏幕的分辨率
           Screen scr =Screen.PrimaryScreen;
           Rectangle rc =scr.Bounds;
           intiWidth =rc.Width;

          intiHeight =rc.Height;

          26.程序当前目录下文件:("..\..\banana.ico")

          27.以方法调用方式计算圆面积(点击button1后计算,以半径为10.0为例)
          private void btn_enter_Click(object sender, EventArgs e)
          {
          AreaCount(10.0);
          }
          public Double AreaCount(Double moRadius)
          {
          //可以直接使用Math.PI,即圆周率3.14159265358979323846 
          return Math.PI * moRadius * moRadius ;
          }

          28用静态类的方法移动无边框窗口(窗口以Form1为例,静态类以dataPass.cs为例)
          //创建静态类
          public static class dataPass
          { 
          public static Int32 _mouseX; 
          public static Int32 _mouseY;
          public static Int32 mouseX 
          { 
          get { return _mouseX; } 
          set { _mouseX = value; } 
          }
          public static Int32 mouseY 
          { 
          get { return _mouseY; } 
          set { _mouseY = value; } 
          }
          }
          //鼠标按下事件中记录鼠标初始坐标
          private void Form1_MouseDown(object sender, MouseEventArgs e) 
          { 
          dataPass._mouseX = e.X; 
          dataPass._mouseY = e.Y; 
          }
          //鼠标移动事件中改变Form1的位置
          private void Form1_MouseMove(object sender, MouseEventArgs e) 
          { 
          //先判断鼠标左键是否已按下,按下了才移动Form1 
          if (e.Button == MouseButtons.Left) 
          { 
          //新位置为原位置+现在鼠标坐标-初始鼠标坐标
          this.Location = new Point(this.Location.X + e.X - dataPass._mouseX, this.Location.Y + e.Y - dataPass._mouseY); 
          } 
          }

          29. 以创建一个坐标点对象,计算偏移量的方式来移动无边框窗体
          private Point moePoint;
          private void Form1_MouseDown(object sender, MouseEventArgs e) 
          { 
          moePoint= new Point(-e.X,-e.Y);
          }
          private void Form1_MouseMove(object sender, MouseEventArgs e) 
          { 
          if (e.Button == MouseButtons.Left) 
          { 
          Point moePosition = Control.MousePotision;
          //偏移
          moePosition.Offset(moePoint.X,moePoint.Y);
          this.DesktopLocation=moePosition;
          } 
          }

          30. 判断列表选中项来改变窗体背景颜色(以comboBox1,Form1为例)
          //创建颜色数组
          public System.Drawing.Color[] arrColor = { Color.Red,Color.Green,Color.Blue,Color.Purple,Color.Pink,Color.Yellow};
          //注意列表项数不要超过颜色数组中元素个数
          private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
          {
          Form1.BackColor=arrColor[comboBox1.SelectedIndex];
          }

          31. 变换背景颜色4种方式(以改变Form1的背景颜色为例)
          //使用既有颜色
          Form1.BackColor=Color.Red;
          //使用透明度+既有颜色方式,透明度的值从0到255,255为完全不透明
          Form1.BackColor=Color.FromArgb(255,Color.Red);
          //自定义颜色,不含透明,3个参数分别是红色,绿色,蓝色,值从0~255
          Form1.BackColor=Color.FromArgb(255,0,128); 
          //自定义颜色,含透明,4个参数分别是透明度,红色,绿色,蓝色,值从0~255 
          Form1.BackColor=Color.FromArgb(192,255,0,128);

          32. 扑克牌随机发牌(4人为例)
          static void Main(string[] args)
          {
          int i, j, temp;
          Random Rnd = new Random();
          int k;
          int [] Card = new int[52];
          int [,] Player = new int[4, 3]; for (i = 0; i < 4; i++) //52张牌初始化
          for (j = 0; j < 13; j++)
          Card[i * 13 + j] = (i + 1) * 100 + j + i;
          Console.Write("How many times for card:");
          string s = Console.ReadLine();
          int times = Convert.ToInt32(s);
          for (j=1;j<=times;j++)
          for (i = 0; i < 52; i++)
          {
          k = Rnd.Next(51 - i + 1) + i;//产生i到52的之间的随机数
          temp = Card[i];
          Card[i] = Card[k];
          Card[k] = temp;
          }
          k = 0;
          for (j = 0; j < 13; j++)//52张牌分给4个玩家
          for (i = 0; i < 4; i++)
          Player[i, j] = Card[k++];
          for(i=0;i<4;i++)//显示4个玩家的牌
          {
          Console.WriteLine ("玩家{0}的牌:",i+1);
          for(j=0;j<13;j++)
          {
          k =(int)Player[i,j]/100;//分离出牌的种类
          switch (k)
          {
          case 1: //红桃
          s=Convert.ToString('x0003');
          break;
          case 2: //方块
          s=Convert.ToString('x0004');
          break;
          case 3: //梅花
          s=Convert.ToString('x0005');
          break;
          case 4: //黑桃
          s=Convert.ToString('x0006');
          break;
          }
          k=Player[i,j]%100;
          switch(k)
          {
          case 1:
          s =s+"A";
          break;
          case 11:
          s =s+"J";
          break;
          case 12:
          s =s+"Q";
          break;
          case 13:
          s =s+"K";
          break;
          default:
          s=s+Convert .ToString(k);
          break;
          }
          Console.Write (s);
          if (j<12)
          Console.Write (",");
          else 
          Console.Write(" "); 
          }
          } Console.Read();
          }

          33. 创建一个渐变色背景按钮控件
          #创建控件请点击"新建"->"项目"->"Windows窗体控件库"->编码->引用
          using System;using System.Collections.Generic;
          using System.ComponentModel;
          using System.Drawing;
          using System.Data;
          using System.Linq;
          using System.Text;
          using System.Windows.Forms;
          namespace moeButton
          { 
          //此处新建好项目后修修改成如下以继承Button
          public partial class moeButton : System.Windows.Forms.Button 
          { 
          private Color _moeColor1 = Color.Magenta; 
          private Color _moeColor2 = Color.Cyan; 
          private int _moTransparent1 = 128; 
          private int _moTransparent2 = 128;
          public Color moeColor1 
          { 
          get { return _moeColor1; } 
          set { _moeColor1 = value; } 
          }
          public Color moeColor2 
          { 
          get { return _moeColor2; } 
          set { _moeColor2 = value; } 
          }
          public int moTransparent1 
          { 
          get { return _moTransparent1; } 
          set { _moTransparent1 = value; } 
          }
          public int moTransparent2 
          { 
          get { return _moTransparent2; } 
          set { _moTransparent2 = value; } 
          }
          public moeButton() 
          { 
          }
          protected override void OnPaint(PaintEventArgs pevent) 
          { 
          base.OnPaint(pevent); 
          Color c1 = Color.FromArgb(_moTransparent1,_moeColor1); 
          Color c2 = Color.FromArgb(_moTransparent2, _moeColor2); 
          Brush br = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle,c1,c2,10); 
          pevent.Graphics.FillRectangle(br,ClientRectangle); 
          br.Dispose(); 
          } 
          }
          }

          34.获取剪切板的图片
          IDataObject data = Clipboard.GetDataObject();//从剪贴板中获取数据
          if(data.GetDataPresent(typeof(Bitmap)))//判断是否是图片数据
          {
          Bitmap map = (Bitmap) data.GetData(typeof(Bitmap));//将图片数据存到位图中
          this.pictureBox1.Image = map;//显示
          map.Save(@"C:a.bmp");//保存图片

          35. 使用SQL Server身份验证
          #moeData为数据库名,Prism为电脑名称,SQLExpress为使用的SQL Server版本
          //不要在程序中硬编码用户名和密码
          //使用Linq to Sql 来管理数据库就不需要手写这些代码
          String userName = "mo";
          String userPass = "1234";
          String connStr= String.Format("User ID ={0};Password ={1};Initial Catalog = moeData;"+"Data Source=Prism\SQLExpress",userName,userPass);
          Sqlconnection moConnection=newSqlConnection();
          moConnection.ConnectionString = connStr;

          36. 保存文件对话框与写入数据的综合应用及线程模拟假死
          #Using System.IO;
          #Using System.Theading;
          //SaveDialog.ShowDialog().Value为true 或 flase,必须先点SaveDialog中的确定或取消才能继续使用应用程序的其他任何窗体
          if(SaveDialog.ShowDialog().Value)
          {
          using(StreamWrite moWrite = new StreamWrite(saveDialod.FileName))
          {
          //假死10秒,窗体可能会空白,标题显示无响应
          Thead.Sleep(10000);
          //假死之后提示文件保存成功!窗体恢复正常
          MessageBox.Show("保存成功!","提示");
          }
          }

          37.进度条示例
          //添加一个processBar1,Max设为100;
          //添加一个timer1,Interval设为100;
          public Int32 mo=0;
          Timer1_Tick事件中写上
          {
          if(mo<101)
          {
          mo++;
          processBar1.Value=mo;
          }
          else
          {
          timer1.Stop();
          processBar1.Value=100;
          }
          }

          38. 将文件复制进度显示在进度条上
          //需要拖一个ProcessBar1,一个Timer,1个Button1
          //点击Button1开始复制,
          //假设从C:/test.rar复制到C:/test/test.rar
          int hasCopy = 0; 
          FileStream fsRead = null; 
          FileStream fsWrite = null; 
          int fileLen = 0; 
          void Button1Click(object sender, EventArgs e) 
          { 
          string srcPath = @"C:/test.rar"; 
          string desPath = @"C:/test/test.rar"; 
          if(File.Exists(srcPath))
          { 
          fsRead = new FileStream (srcPath,FileMode.Open,FileAccess.ReadWrite); 
          fsWrite = new FileStream(desPath,FileMode.Create,FileAccess.ReadWrite); 
          fileLen = (int)fsRead.Length; 
          ProgreeBar1.Maximum = fileLen;
          byte[] buffer = new byte[1024]; 
          int len; 
          button1.Enabled= false; 
          timer1.Start(); 
          while((len = fsRead.Read(buffer,0,buffer.Length))>0)
          { 
          hasCopy += len; 
          fsWrite.Write(buffer,0,len); 
          fsWrite.Flush(); 
          }
          fsWrite.Close(); 
          fsRead.Close();
          }
          }
          private void Timer1Tick(object sender, EventArgs e) 
          { 
          if(fileLen > 0 && hasCopy <= fileLen)
          { 
          ProgreeBar1.Value = hasCopy;
          } 
          }

          39.获取 鼠标的位置

          1.   整个屏幕

          textBox1.Text=System.Windows.Forms.Control.MousePosition.X.ToString();

          textBox2.Text=System.Windows.Forms.Control.MousePosition.Y.ToString();

          2.只应用于本窗体

          Point myp = this.PointToScreen(e.Location);

          this.Text = Convert.ToString(myp.X) + "  " + Convert.ToString(myp.Y);

          40.获取当前文件所在的目录

          MessageBox.Show(this,"当前执行程序所在的文件夹为: "+System.IO.Directory.GetCurrentDirectory()+" ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

          41.获取特殊文件夹位置

          系统文件夹:(windowssystem32)this.textBox1.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.System);

          程序文件夹:  this.textBox2.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles);

          桌面文件夹:  this.textBox3.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);

          启动文件夹:  this.textBox4.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.Startup);

          开始菜单文件夹:   this.textBox5.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.StartMenu);

          我的音乐文件夹:   this.textBox6.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.MyMusic);

          42.只允许输入数字(文本框textbox)

          privatevoid txtSum_KeyPress(object sender, KeyPressEventArgs e)

          {

          if ((e.KeyChar != 8 && !char.IsDigit(e.KeyChar))&&e.KeyChar!=13)

          {

          MessageBox.Show("商品数量只能输入数字","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

          e.Handled = true;

          }

          }

          43.控制鼠标位置(引用API)

          using System.Runtime.InteropServices;

          [DllImport("User32.dll")]

          privatestaticexternbool SetCursorPos(int x, int y);

          privatevoid Form1_Load(object sender, EventArgs e)

          {

          SetPos();

          }

          privatestaticvoid SetPos()

          {

          int dx = 0;

          int dy = 0;

          SetCursorPos(dx, dy);

          }

          44.文本操作(txt保存,追加,读取)

          1、建立一个文本文件

          public class FileClass

          {

          public static void Main()

          {

          WriteToFile();

          }

          static void WriteToFile()

          {

          StreamWriter SW;

          SW=File.CreateText("c:MyTextFile.txt");

          SW.WriteLine("God is greatest of them all");

          SW.WriteLine("This is second line");

          SW.Close();

          Console.WriteLine("File Created SucacessFully");

          }

          }

          2、读文件

          public class FileClass

          {

          public static void Main()

          {

          ReadFromFile("c:MyTextFile.txt");

          }

          static void ReadFromFile(string filename)

          {

          StreamReader SR;

          string S;

          SR=File.OpenText(filename);

          S=SR.ReadLine();

          while(S!=null)

          {

          Console.WriteLine(S);

          S=SR.ReadLine();

          }

          SR.Close();

          }

          }

          3、追加操作

          public class FileClass

          {

          public static void Main()

          {

          AppendToFile();

          }

          static void AppendToFile()

          {

          StreamWriter SW;

          SW=File.AppendText("C:MyTextFile.txt");

          SW.WriteLine("This Line Is Appended");

          SW.Close();

          Console.WriteLine("Text Appended Successfully");

          }

          }

          打开:

          richTextBox1.LoadFile(“c:\1.txt”, RichTextBoxStreamType.PlainText);

          保存:

          richTextBox1.SaveFile(“c:\1.txt”, RichTextBoxStreamType.PlainText);

          45.文件夹文件操作(删除,创建)

          using System.IO;

          //创建文件夹

          1.    if (!Directory.Exists("c:\yinlikun\abc\abcd"))

          {

          Directory.CreateDirectory("c:\yinlikun\abc\abcd");

          }

          2.Directory.CreateDirectory("c:\adadsaaasda");

          //删除文件夹

          if (Directory.Exists("c:\123"))

          {

          Directory.Delete ("c:\123");

          }

          //创建文件

          1.File.Create("c:\aaa.txt");

          2.

          FileInfo fi = newFileInfo("C:\ls.bmp");

          if (!fi.Exists)

          {

          File.Create("C:\ls.bmp");

          }

          //删除文件

          FileInfo a = newFileInfo("C:\1.txt");

          if (a.Exists)

          {

          File.Delete("C:\1.txt");

          }

          46.调用exe 文件

          using System.Diagnostics;

          Process p = new Process();

          p.StartInfo.FileName = "cmd.exe";          //要调用的程序

          p.StartInfo.UseShellExecute = false;       //关闭Shell的使用

          p.StartInfo.RedirectStandardInput = true;  //重定向标准输入

          p.StartInfo.RedirectStandardOutput = true; //重定向标准输出

          p.StartInfo.RedirectStandardError = true;  //重定向错误输出

          p.StartInfo.CreateNoWindow = true;         //设置不显示窗口

          p.Start();

          47.利用定时器在Label上间隔一段时间一行一行地显示文本文件中的内容
          //读取C: est.txt中的内容按行隔一段时间显示到label1上为例
          string[] s = null;
          private int nline=0;
          s = File.ReadAllLines(@"c: est.txt");
          private void timer1_Tick(object sender, EventArgs e)
          {
          if (nline < s.Length)
          {
          label1.Text = s[nline].ToString();
          }
          else
          {
          nline = 0;
          }
          nline = nline + 1;
          }

          48. 利用DateTime.Now和DateTimePicker计算到某年某月某日还有多少天
          //date1,2格式化成你自己需要的格式
          DateTime date1 = DateTime.Now.Date; 
          DateTime date2 = dateTimePicker1.Value; 
          TimeSpan ts = date2 - date1; 
          MessageBox.Show(string.Format("距离{0}还有{1}天",date2, ts.TotalDays.ToString()));

          49. .通过判断按下的按键来移动控件的位置
          //以移动Form1中的button1为例
          this.KeyPreview = true; 
          private void mainForm_KeyPress(object sender, KeyPressEventArgs e) 
          { 
          String moeKey = e.KeyChar.ToString(); 
          switch (moeKey) 
          { 
          case "w": button1.Top-=10; break; 
          case "s": button1.Top+=10; break; 
          case "a": button1.Left-=10; break; 
          case "d": button1.Left+=10; break; 
          } 
          }

          50. 截取窗体保存成图片
          //以点击Form1中的button1截取Form1为例
          //用Graphics.CopyFromScreen()实现,4个参数
          Image memory = new Bitmap(this.Size.Width, this.Size.Height); 
          Graphics g = Graphics.FromImage(memory); 
          g.CopyFromScreen(this.Location.X,this.Location.Y,0,0,this.Size); 
          Clipboard.SetImage(memory); 
          String folderPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyPictures); 
          string imagePath = folderPath+@"mo"+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second+"llyn23.jpg"; 
          memory.Save(imagePath, ImageFormat.Jpeg);

          51. 拖动文件到窗体中,窗体中显示文件路径
          //以Form1为例,路径显示在label1上
          this.AllowDrop = true;
          this.DragDrop += new DragEventHandler(Form1_DragDrop);
          this.DragEnter += new DragEventHandler(Form1_DragEnter);
          void Form1_DragDrop(object sender, DragEventArgs e)
          {
          string[] paths = e.Data.GetData(DataFormats.FileDrop) as string[];
          label1.Text = paths[0];
          }
          void Form1_DragEnter(object sender, DragEventArgs e)
          {
          if (e.Data.GetDataPresent(DataFormats.FileDrop))
          {
          e.Effect = DragDropEffects.Copy;
          }
          else
          {
          e.Effect = DragDropEffects.None;
          }
          }

          52.把txt中的文本每行导入到listbox中

          using System.IO;

          string[] s = null;

          privateint nline = 0;

          privatevoid button1_Click(object sender, EventArgs e)

          {

          for (; nline < s.Length; nline++)

          {

          listBox1.Items.Add(s[nline].ToString());

          }

          }

          privatevoid Form1_Load(object sender, EventArgs e)

          {

          s = File.ReadAllLines(@"c: ext.txt");

          }

          53.把listbox的每项导入到txt中(listbox text)

          StreamWriter writer = newStreamWriter("abc.txt ", false, Encoding.Unicode);  //

          for (int i = 0; i < listBox1.Items.Count; i++)

          {

          writer.WriteLine(listBox1.Items[i]);

          }

          writer.Close();

          54.把屏幕截图附加到某个控件上

          Graphics myg = pictureBox1.CreateGraphics();//pictureBox1控件

          Size mys = new Size(1366, 768);

          myg.CopyFromScreen(0, 0, 0, 0, mys);//截取屏幕的图像

          myg.Dispose();

          55.屏蔽任务管理器

          File.OpenWrite(@"C:WINDOWSsystem32 askmgr.exe");

          56.列出文件夹下所有文件(包括路径)

          string[] wenjian = Directory.GetFiles("C:\sounds\");

          foreach (string a in wenjian)

          {

          listBox1.Items.Add(a);

          }

          57:释放内存的方法(代码加入定时器中,不断执行)

          微软的 .NET FRAMEWORK 现在可谓如火如荼了。但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,其主要原因是因为.NET程序在启动时,是需要由JIT动态编译并加载的,这个加载会把所有需要的资源都加载进来,很多资源是只有启动时才用的。
          以XP 系统为例子,程序启动后,打开任务管理器,会看到占用的内存量比较大,你把程序最小化,会发现该程序占用的内存迅速减小到一个很小的值,再恢复你的程序,你会发现内存占用又上升了,但是比你刚启动时的内存占用值还是小的,这就是一个资源优化的过程,这个过程是操作系统主动完成的。

          每次都是写了之后回过头来才发现自己的代码很丑,系统架构师的作用就体现出来了。
          这里整理了一些网上关于Winform如何降低系统内存占用的资料,供参考,待更新:
          1、使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多
          2、强制垃圾回收
          3、多dispose,close
          4、用timer,每几秒钟调用:SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);具体见附录。
          5、发布的时候选择Release
          6、注意代码编写时少产生垃圾,比如String + String就会产生大量的垃圾,可以用StringBuffer.Append
          7、this.Dispose();    this.Dispose(True);   this.Close();    GC.Collect();  
          8、注意变量的作用域,具体说某个变量如果只是临时使用就不要定义成成员变量。GC是根据关系网去回收资源的。
          9、检测是否存在内存泄漏的情况,详情可参见:内存泄漏百度百科
          致谢及附录:
          致谢:我可以感谢XiXiTV么,还有各种TV和桂电在线,还有感谢某某和某某们,自己想吧。
          附录:定期清理执行垃圾回收代码:
          //在程序中用一个计时器,每隔几秒钟调用一次该函数,打开任务管理器,你会有惊奇的发现
          #region 内存回收
          [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
          public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
          /// <summary>
          /// 释放内存
          /// </summary>
          public static void ClearMemory()
          {
          GC.Collect();
          GC.WaitForPendingFinalizers();
          if (Environment.OSVersion.Platform == PlatformID.Win32NT)
          {
          App.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
          }
          }
          #endregion

          58.最小化其他窗口(所有窗口)

          最小化所有窗口的方法:

          添加引用 Microsoft Shell Controls and Automation
          Shell32.ShellClass sc = new Shell32.ShellClass(); 
          sc.MinimizeAll(); // Win+M 
          sc.UnminimizeAll(); // Shift+Win+M 
          IShellDispatch4 sd4 = (IShellDispatch4)sc; 
          if(sd4 != null) 
          sd4.ToggleDesktop(); // Win+D

          这两行代码:

          Shell32.ShellClass sc = new Shell32.ShellClass(); 
          sc.MinimizeAll(); // Win+M

          即可最小化所有窗口,然后再把锁定窗口的WindowState设置成Normal即可。

          而以下代码:

          IShellDispatch4 sd4 = (IShellDispatch4)sc; 
          if(sd4 != null) 
          sd4.ToggleDesktop(); // Win+D

          最小化所有窗口后,把锁定窗口的WindowState设置成Normal也无法把锁定窗口显示出来(所有窗口都被最小化了)

          59.窗体透明控件不透明

          Form f = newForm(); //创建一个新窗体

          Label lab = newLabel();

          privatevoid Form1_Load(object sender, EventArgs e)

          {

          f.FormBorderStyle = FormBorderStyle.None; //设置窗体无边框

          f.ShowInTaskbar = false;

          f.BackColor = Color.Red; f.TransparencyKey = f.BackColor; //让窗体透明  

          lab.Text = "我是在透明窗体上的不透明文本!";

          lab.BackColor = Color.Transparent; //背景色透明

          lab.Location = newPoint(100, 150); //调整在窗体上的位置

          f.Controls.Add(lab);

          f.TopLevel = true;

          f.Show();

          }

          privatevoid Form1_Move(object sender, EventArgs e)

          {

          f.Location = this.Location;

          }

          60:打开一个新窗体关闭老窗体(建立一个新线程)

          privatevoid button1_Click(object sender, EventArgs e)

          {

          newThread(show).Start();

          this.Close();

          }

          void show()

          {

          Form2 abc = newForm2();

          Application.Run(abc); 

          }

          61:100内所有素数

          62.//避免闪烁
          this.SetStyle(ControlStyles.OptimizedDoubleBuffer |ControlStyles.ResizeRedraw |ControlStyles.AllPaintingInWmPaint, true);

          63.MD5加密

          有时我们的系统需要对用户的密码进行加密,则可以使用MD5加密算法,这在.net 2.0及以上版本中有,
          首先引入命名空间:
          using System.Security.Cryptography;
          然后可以编写一个通用的函数放到一个类中,下面给出全部的源代码:
          using System;
          using System.Security.Cryptography;
          using System.Text;
          namespace Common
          {
          class Md5
          {
          public static string MD5(string encryptString)
          {
          byte[] result = Encoding.Default.GetBytes(encryptString);
          MD5 md5 = new MD5CryptoServiceProvider();
          byte[] output = md5.ComputeHash(result);
          string encryptResult = BitConverter.ToString(output).Replace("-", "");
          return encryptResult;
          }
          }
          }
          使用时直接调用函数对字符串加密就行了
          string s1 = "123456";
          string s2 = Common.Md5.MD5(s1);
          则s2的值变为32的字符串:E10ADC3949BA59ABBE56E057F20F883E

          64.窗体传值

          Form1:

          只需打开Form2即可

          Form2:

          Form1 f1;

          public Form2(Form1 fm1)

          {

          f1 = fm1;

          InitializeComponent();

          }

          privatevoid button1_Click(object sender, EventArgs e)

          {

          f1.textBox1.Text = textBox1.Text;

          }

          65. dataGridView1数据绑定.

          string str = @"Data Source=JACK-PCSQLEXPRESS;Database=netmusic;Integrated Security = SSPI;";

          SqlConnection myconn = newSqlConnection(str);

          myconn.Open();

          String str2 = "select * from tb_musicInfo";

          SqlDataAdapter myda = newSqlDataAdapter(str2, myconn);

          DataTable myst = newDataTable();

          myda.Fill(myst);

          this.dataGridView1.DataSource = myst;

          myconn.Close();

          66.窗体只运行一次

          1、

          if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)

          {

          MessageBox.Show("程序已经运行了一个实例,该程序只允许有一个实例");

          Application.Exit();

          }

          2、

          string name = Process.GetCurrentProcess().MainModule.ModuleName;

          string pname = Path.GetFileNameWithoutExtension(name);

          Process[] myp = Process.GetProcessesByName(pname);

          if (myp.Length > 1)

          {

          MessageBox.Show("对不起,本版本目前还不支持双开!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Stop);

          this.Dispose(true);

          Application.Exit();

          return;

          }

          3、

          using System.Threading;

          publicstaticvoid Main(string[] args)

          {

          //声明互斥体。

          Mutex mutex = newMutex(false, "ThisShouldOnlyRunOnce");

          //判断互斥体是否使用中。

          bool Running = !mutex.WaitOne(0, false);

          if (!Running)

          {

          Application.Run(newForm1());

          }

          else

          {

          MessageBox.Show("应用程序已经启动!");

          }

          }

          67.获取exe文件图标

          System.Drawing.Icon.ExtractAssociatedIcon(string path)

          68.c# 移动窗体和控件(拖动无标题窗体API)

          using System.Runtime.InteropServices;

          [DllImportAttribute("user32.dll")]

          private extern static bool ReleaseCapture();

          [DllImportAttribute("user32.dll")]

          private extern static int SendMessage(IntPtr handle, int m, int p, int h);

          protected void MyBaseControl_MouseDown(object sender, MouseEventArgs e)

          {

          if (e.Button == MouseButtons.Left)

          {

          this.Cursor = Cursors.SizeAll;

          ReleaseCapture();

          SendMessage(this.Handle, 0xA1, 0x2, 0);

          this.Cursor = Cursors.Default;

          }

          }

          //注:

          如果用于运行时的某个控件,则可以把上面的代码放入此控件的MouseDown事件中,只是SendMessage(this.Handle, 0xA1, 0x2, 0);中的

          this.Handle参数应改为此控件的Handle,如this.button1.Handle即可实现。

          69.Repeater中绑定按钮(button、linkbutton...)

          前台代码:

          <asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">

          <ItemTemplate>

          <asp:Button ID="Button1" runat="server" CommandName="comButton1" CommandArgument='<%#Eval("ID") %>' Text='<%#Eval("Title") %>' />

          </ItemTemplate>

          </asp:Repeater>

          后台代码:

          protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)

          {

          if (e.CommandName == "comButton1") //触发点击事件

          {

          int NewsID = int.Parse(e.CommandArgument.ToString()); //获取回发的值

          InitPage(NewsID); //根据点击回发的值随便调用什么函数了

          }

          }

          70.动态添加控件(动态批量添加控件,并添加事件)

          添加控件:

          CKB.CheckedChanged += new EventHandler(CKB_Click);

          flowLayoutPanel1.Controls.Add(CKB);

          事件定义:

          private void CKB_Click(object sender, EventArgs e)

          {

          CheckBox CKB = (CheckBox)sender;

          MessageBox.Show(CKB.Text);

          }

          71. C#中实现文本框的滚动条自动滚到最底端 

          1、配置textBox的Multiline属性为true;

          2、配置textBox的ScrollBars属性为Vertical,实现纵向滚动条;

          3、然后如下语句实现自己滚动:

          private void textBox3_TextChanged_1(object sender, EventArgs e)

          {

          textBox3.SelectionStart = textBox3.Text.Length;

          textBox3.ScrollToCaret();

          }

          72.字符串分割。

          using System.Text.RegularExpressions;

          string str="aaajsbbbjsccc";

          string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);

          foreach (string i in sArray) Response.Write(i.ToString() + "<br>");

          73. 正则获取两个字符串中间的值

          1)返回一条

          ///<summary>

          ///正则获取两个字符串中间的值

          ///</summary>

          ///<param name="str">源字符串</param>

          ///<param name="s">起始串</param>

          ///<param name="e">结束串</param>

          ///<returns></returns>

          publicstaticstring GetValue(string str, string s, string e)

          {

          Regex rg = newRegex("(?<=(" + s + "))[.\s\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);

          return rg.Match(str).Value;

          }

          2)返回多条

          privatevoid button1_Click(object sender, EventArgs e)

          {

          string str = "aa444444bbaa343434bbaa";

          Regex r = newRegex(@"aa(?<name>.*?)bb");

          MatchCollection m = r.Matches(str);

          foreach (Match ma in m)

          {

          textBox2.Text+= ma.Groups["name"].Value + " ";

          }

          }

          74.解决“从客户端检测到有危险的Request.Form值”错误

          平时在做网站建设的项目中,使用asp.net开发的时候,有时会遇到“从客户端检测到有潜在危险的Request.Form 值”的错误提示,查遍了本页程序也找不出错误的原因,实际正确解决方案应该是:

          1、web.config文档<system.web>后面加入这一句: <pages validaterequest="false"/> 
          示例:
          <?xml version="1.0" encoding="gb2312" ?> 
          <configuration> 
          <system.web> 
          <pages validaterequest="false"/> 
          </system.web> 
          </configuration>

          2、在*.aspx文档头的page中加入validaterequest="false",示例如下:
          <%@ page validaterequest="false" language="c#" codebehind="index.aspx.cs" autoeventwireup="false" inherits="mybbs.webform1" %> 
          .net framework 4.0的特点,在web.config的system.web节点里面加上<httpRuntime requestValidationMode="2.0" />就可以了。

          75.ListView排序功能

          类文件:

          using System;

          using System.Collections.Generic;

          using System.Linq;

          using System.Text;

          using System.Collections;//特别注意

          using System.Windows.Forms;

          namespace Mange

          {

          class ListViewSort : IComparer

          {

          private int col;

          private bool descK;

          public ListViewSort()

          {

          col = 0;

          }

          public ListViewSort(int column, object Desc)

          {

          descK = (bool)Desc;

          col = column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递        

          }

          public int Compare(object x, object y)

          {

          int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);

          if (descK) return -tempInt;

          else return tempInt;

          }

          }

          }

          调用:

          private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)

          {

          if (this.listView1.Columns[e.Column].Tag == null)

          this.listView1.Columns[e.Column].Tag = true;

          bool flag = (bool)this.listView1.Columns[e.Column].Tag;

          if (flag) this.listView1.Columns[e.Column].Tag = false;

          else this.listView1.Columns[e.Column].Tag = true;

          this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listView1.Columns[e.Column].Tag);

          this.listView1.Sort();//对列表进行自定义排序 

          }

  • 相关阅读:
    iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
    iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
    iOS开发——UI基础-按钮的创建和设置
    iOS开发——UI基础-Xcode资源拷贝
    机器学习中的数学基础_七月算法4月机器学习班第1次课程笔记
    leetcode--Merge Sorted Array
    leetcode--First Missing Positive
    leetcode--Divide two integers
    leetcode--Implement strStr()
    leetcode--Remove Element
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193706.html
Copyright © 2011-2022 走看看