您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關C#編程技巧有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
C#編程技巧之一、最小化窗口
點擊“X”或“Alt+F4”時,最小化窗口,
如:
protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) { // User clicked close button this.WindowState = FormWindowState.Minimized; return; } base.WndProc(ref m); }
C#編程技巧之二、如何讓Foreach 循環運行的更快
foreach是一個對集合中的元素進行簡單的枚舉及處理的現成語句,用法如下例所示:
using System; using System.Collections; namespace LoopTest { class Class1 { static void Main(string[] args) { // create an ArrayList of strings ArrayList array = new ArrayList(); array.Add("Marty"); array.Add("Bill"); array.Add("George"); // print the value of every item foreach (string item in array) { Console.WriteLine(item); } } }
你可以將foreach語句用在每個實現了Ienumerable接口的集合里。如果想了解更多foreach的用法,你可以查看.NET Framework SDK文檔中的C# Language Specification。
在編譯的時候,C#編輯器會對每一個foreach 區域進行轉換。
IEnumerator enumerator = array.GetEnumerator(); try { string item; while (enumerator.MoveNext()) { item = (string) enumerator.Current; Console.WriteLine(item); } } finally { IDisposable d = enumerator as IDisposable; if (d != null) d.Dispose(); }
這說明在后臺,foreach的管理會給你的程序帶來一些增加系統開銷的額外代碼。
C#編程技巧之三、將圖片保存到一個XML文件
WinForm的資源文件中,將PictureBox的Image屬性等非文字內容都轉變成文本保存,這是通過序列化(Serialization)實現的,
例子:
using System.Runtime.Serialization.Formatters.Soap; Stream stream = new FileStream("E:\\Image.XML",FileMode.Create,FileAccess.Write,FileShare.None); SoapFormatter f = new SoapFormatter(); Image img = Image.FromFile("E:\\Image.bmp"); f.Serialize(stream,img); stream.Close();
C#編程技巧之四、屏蔽CTRL-V
在WinForm中的TextBox控件沒有辦法屏蔽CTRL-V的剪貼板粘貼動作,如果需要一個輸入框,但是不希望用戶粘貼剪貼板的內容,可以改用RichTextBox控件,并且在KeyDown中屏蔽掉CTRL-V鍵,例子:
private void richTextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.Control && e.KeyCode==Keys.V) e.Handled = true; }
C#編程技巧之五、判斷文件或文件夾是否存在
使用System.IO.File,要檢查一個文件是否存在非常簡單:
bool exist = System.IO.File.Exists(fileName);
如果需要判斷目錄(文件夾)是否存在,可以使用System.IO.Directory:
bool exist = System.IO.Directory.Exists(folderName);
C#編程技巧之六、使用delegate類型設計自定義事件
在C#編程中,除了Method和Property,任何Class都可以有自己的事件(Event)。定義和使用自定義事件的步驟如下:
(1)在Class之外定義一個delegate類型,用于確定事件程序的接口
(2)在Class內部,聲明一個public event變量,類型為上一步驟定義的delegate類型
(3)在某個Method或者Property內部某處,觸發事件
(4)Client程序中使用+=操作符指定事件處理程序
例子: // 定義Delegate類型,約束事件程序的參數
public delegate void MyEventHandler(object sender, long lineNumber) ; public class DataImports { // 定義新事件NewLineRead public event MyEventHandler NewLineRead ; public void ImportData() { long i = 0 ; // 事件參數 while() { i++ ; // 觸發事件 if( NewLineRead != null ) NewLineRead(this, i); //... } //... } //... } // 以下為Client代碼 private void CallMethod() { // 聲明Class變量,不需要WithEvents private DataImports _da = null; // 指定事件處理程序 _da.NewLineRead += new MyEventHandler(this.DA_EnterNewLine) ; // 調用Class方法,途中會觸發事件 _da.ImportData(); } // 事件處理程序 private void DA_EnterNewLine(object sender, long lineNumber) { // ... }
C#編程技巧之七、IP與主機名解析
使用System.Net可以實現與Ping命令行類似的IP解析功能,例如將主機名解析為IP或者反過來:
private string GetHostNameByIP(string ipAddress) { IPHostEntry hostInfo = Dns.GetHostByAddress(ipAddress); return hostInfo.HostName; } private string GetIPByHostName(string hostName) { System.Net.IPHostEntry hostInfo = Dns.GetHostByName(hostName); return hostInfo.AddressList[0].ToString(); }
感謝各位的閱讀!關于“C#編程技巧有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。