1. 程式人生 > >C#基礎(3)

C#基礎(3)

之間 sys delete cnblogs show tle 前臺 nco click

摘要: 基於.Net Framework的winform開發,主要是關於為winform平臺的一些控件的屬性以及事件的使用。

涉及內容: 1、Directory類 2、文本對話框 3、選擇字體和顏色對話框 4、Treeview的使用 5、進程以及多線程(線程池) 6、GDI繪圖 7、自定義控件

1、Directory類

directory類是一個靜態類,作用:操作文件夾。操作文件夾在項目中比較常用,比如涉及到文件的存儲,需要判斷文件夾是否存在,然後根據時間日期等創建文件夾

Directory.CreateDirectory(@"
c:\a\b"); //創建文件夾 Directory.Delete(@"c:\Windows.old",true); //刪除文件夾 Directory.Move(@"c:\a",@"C:\Users\xsh.cpp\Desktop\new"); //剪切文件夾 必須新建文件夾的名字 string[] path = Directory.GetFiles(@"C:\Users\xsh.cpp\Desktop\圖像合成", "*.jpg"); //獲得一個文件夾下的全部路徑 按類挑選文件+ *.文件後綴 選類型文件 string[] paths = Directory.GetDirectories(@"
C:\Users\xsh.cpp\Desktop\圖像合成");//獲取文件夾下的全部路徑 Directory.Exists(@"c:\a\b") //判斷文件夾是否存在

2、文本對話框

當需要上傳或者打開本地某一個文件的時候,就會打開一個文本對話框,去選擇文件。

a、打開文本對話框

using System.IO;
OpenFileDialog open = new OpenFileDialog(); //創建對象
open.Title = "選擇需要的文件";                         //對話框標題
open.Multiselect = true;                               //
對話框多選,也就是同時選擇多個文件 open.InitialDirectory = @"C:\Users\xsh.cpp\Desktop"; //對話框的初始文件夾 open.Filter = "文本文件|*.txt|媒體文件|*.wav|圖片文件|*.jpg|所有文件|*.*"; //可以選擇的文件類型 open.ShowDialog(); //必要的 一定要有

b、保存文本對話框:選擇保存路徑

SaveFileDialog save = new SaveFileDialog(); //創建對象
save.Title = "請選擇保存的路徑:";            //對話框標題
save.InitialDirectory = @"C:\Users\xsh.cpp\Desktop";           //對話框默認位置
save.Filter = "文本文件|*.txt|所有文件|*.*";          //對話框文件類型
save.ShowDialog();       //打開對話框        後續寫入的一些代碼
 

3、選擇字體和顏色對話框

有時候有改變選中字體或者字體顏色的需求,就需要運用可以改變字體或者顏色的對話框,然後去選擇

FontDialog font = new FontDialog();       //創建對象
font.ShowDialog();             //打開對話框
richTextBox1.SelectionFont=font.Font;        //為選中的文本更換字體

ColorDialog color = new ColorDialog();      //創建對象
color.ShowDialog();
richTextBox1.SelectionColor = color.Color;      //為選中的文本更換字體顏色

4、viewtree的使用

    TreeNodeCollection tc=treeView1.Nodes;
    tc.Add(根節點);                         //添加根節點 
    
    TreeNode tn=treeView1.SelectedNode;
    tn.Nodes.Add(子節點名稱);               //為選中的根節點添加子節點 

TreeView、遞歸、文件處理(資料管理器)

聲明TreeNodeCollection tc
   
   ①、獲取路徑下的所有文件夾名稱:string [] path=Directory.GetDirectories(文件路徑);
   
   ②循環數組,截取文件夾名稱(單獨名稱)   string dirName=Path.GetFileNameWithoutExtension(path[i]);
   
   ③加入TreeView, tc.Add(dirName);  
   
   ④ 遞歸:以當前節點繼續循環
   
-->代碼:

       public static void LoadFile(string str, TreeNodeCollection tc)
        {
            //文件夾
            string []temp=  Directory.GetDirectories(str);
            for (int i = 0; i < temp.Length; i++)
            {
                //截取文件夾路徑的名稱
                string dirName=   Path.GetFileNameWithoutExtension(temp[i]);
                TreeNode tn=   tc.Add(dirName);

               //以當前節點
                LoadFile(temp[i],tn.Nodes);
            }
            //文件
            string [] fileName=  Directory.GetFiles(str);
            for (int i = 0; i < fileName.Length; i++)
            {
                string dirName = Path.GetFileNameWithoutExtension(fileName[i]);
                tc.Add(dirName);
            }
            

5、進程以及線程

a、進程:打開任務管理器就可以看到當前正在運行的一些進程,當然,進程可以在C#代碼中打開或者關閉

using System.Diagnostics;
Process.Start("notepad");       //通過進程打開記事本
Process.Start(@"C:\Users\xsh.cpp\Desktop\1.wav");   //通過線程打開指定文件
//獲取當前程序運行的所有進程
Process ps = new Process();
Process[] pce = Process.GetProcesses();
pce[i].iKill();         //關閉進程 

b、多線程

線程:一個項目中比較常用的東西,一個遊戲,軟件的運行,往往是多線程的。一個網站後臺運行某些計算,可以開辟一個線程。winform默認為單線程。 例如,當執行計算的時候,不能夠拖動窗體,如果另外開啟一個線程,就解決了這個問題。 常例:邊看書邊聽歌

簡單運用:

using System.Threading;
Thread   td = new Thread(Test);    //開辟一個線程 Test為一個方法
 td.IsBackground = true;   //  //標記為後臺進程:線程默認都是為前臺線程,一個進程退出標誌:所有前臺線程都結束後
 td.Start();            //讓線程可以隨時準備開始  在start()中傳入方法的參數
Thread.Sleep(3000); //線程休眠3秒

線程池:

程池的線程本身都是後臺線程線程池的優勢:線程可以進行重用

啟動一個線程:開辟內存空間。線程非常多的時候,操作系統花費大量時間用在線程切換

ThreadPool.QueueUserWorkItem(new WaitCallback(Target),a);      //Target為要執行的方法, a為方法的參數
ThreadPool.QueueUserWorkItem(o => {});  //中間問lambda表達式, 常用法

比較詳細的描述,做個標記↓↓

https://www.cnblogs.com/wwj1992/p/5976096.html

6、GDI繪圖

GDI是Graphics Device Interface的縮寫,含義是圖形設備接口,它的主要任務是負責系統與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出

常用:繪制驗證碼

using System.Drawing;
//繪圖 :  筆  紙  繪圖的對象
  //創建GDI對象
Graphics g = this.CreateGraphics();
 //創建畫筆對象
 Pen pen = new Pen(Brushes.Red);
 //創建兩個點  兩點確定一條直線
 Point p1 = new Point(100,100);
 Point p2 = new Point(300, 350);
 //調用GDI對象進行畫圖
 g.DrawLine(pen, p1, p2);

繪制驗證碼:

            //產生隨機數
            Random r = new Random();
            string str = null;
            for (int i = 0; i <6; i++)
            {
                str += r.Next(0,10).ToString();
            }//創建GDI對象
            Bitmap bit = new Bitmap(pictureBox1.Width, 300);   //定義高度和寬度
            Graphics g = Graphics.FromImage(bit);

            //驗證碼數字
            for (int i = 0; i < 6; i++)
            {
                string[] font = { "宋體", "華文行楷", "黑體", "方正舒體", "方正姚體" };
                Color[] color = { Color.Red, Color.Yellow, Color.Black, Color.Blue, Color.Green, Color.Pink };
                // Brushes [] bus = {}
                Point p1 = new Point(i*40, 100);
                g.DrawString(str[i].ToString(), new Font(font[r.Next(0, 5)],100), new SolidBrush(color[r.Next(0,6)]), p1);
            }

            //繪制線
            Pen pen = new Pen(Color.Green);
            for (int i = 0; i <30; i++)
            {
                Point p1 = new Point(r.Next(0, pictureBox1.Width), r.Next(100, 250));
                Point p2 = new Point(r.Next(0, pictureBox1.Width), r.Next(100, 250));
                g.DrawLine(pen,p1,p2);
            }

            //繪制點
            for (int i = 0; i < 800; i++)
            {
                bit.SetPixel(r.Next(0, pictureBox1.Width), r.Next(100, 250), Color.Green);
            }

繪制驗證碼可以封裝成一個類,然後需要的時候,傳入相應的參數,則可以生成。

7、自定義控件

    Button btn = new Button();     //創建一個按鈕的對象
    
    btn.Size  btn.Location  btn.BackColor  //設置一些屬性  
this.Controls.Add(btn);         //添加到窗體中(必須)
 
    btn.Click+=Btn_Click1          // +=後按兩次Teb 鍵

小結:winform一些有關的控件的使用還有很多,也很多比較重要的。不過之前打的代碼也都看過了一遍。雖然記不住,但這東西應該不是靠記憶的。很多都是根據邏輯去使用,一個控件觸發的事件,可以在事件的詳細說明去了解,還有很多屬性,都基本類似。

C#基礎(3)