發表文章

目前顯示的是有「csharp」標籤的文章

如何列出系統中的印表機,以及指定印表機來做列印

這篇筆記一下小技巧,如果在軟體中,想要列印東西到指定的印表機上,可以利用 PrinterSettings.PrinterName 的屬性來做,很簡單的就可以指定要使用的印表機,那麼如果要知道系統中所有已經安裝的印表機名稱,則可以用 PrinterSettings.InstalledPrinters 來做,下面是簡單的測試程式碼 using   System ; using   System . Drawing ; using   System . Drawing . Printing ; using   System . Windows . Forms ; namespace   WindowsFormsApplication1 {      public   partial   class   Form1  :  Form     {          PrintDocument   printer ;          public   Form1 ()         {              InitializeComponent ();              printer   =   new   PrintDocument ();              printer . PrintPage   += ...

利用FtpWebRequest列出FTP位置檔案結構

圖片
在FTP的操作中,有時會遇到需要列出FTP站台中,檔案、目錄相關的結構;而利用FtpWebRequest所提供的相關方法去取得時,取回的會像是下面這樣的一串文字 從結果可以看出,在資料夾的部分會出現DIR這樣樣的字樣,一般的檔案則是出現檔案名稱,但是這樣的方式要列出整個檔案結構是比較不直覺、方便的,不過我們可以利用這些資訊加工之後,就可以達到樹狀檢視這樣的效果。 試寫了一下,UI部分很簡單,只有一個按鈕以及treeview 程式碼的部分大概會像是下面這樣 private void btnRefresh_Click ( object sender , EventArgs e ) { TreeNode root = new TreeNode ( " ftproot " ) ; treeView1 . Nodes . Add ( root ) ; ftppath = string . Empty ; InserNodeData ( ref root , string . Empty ) ; root = null ; } string ftppath = string . Empty ; private void InserNodeData ( ref TreeNode node , string secondPath ) { List < clsFTPData > child = new List < clsFTPData > ( ) ; ListFtpFiles ( ref child , ftppath ) ; var childitems = from o in child orderby o . DataType , o . DataName ...

Extension Method in C#

圖片
在.Net中,有許許多多的類別可供使用,那如果想要在已有的類別上去新增自己做的Function,應該要怎麼做呢? 這個時候我們可以撰寫擴充現有類別的程式碼,例如想要幫string來新增自訂的方法,可以加入以下的類別 namespace StringExtension { public static class Extension { public static string ShowMachineName(this string str) { return Environment.MachineName; } public static string AddMessage(this string str, string msg) { return "Hello : " + msg; } } } 要特別注意的地方在下圖紅色框框的地方 要注意的地方是 自行撰寫的類別比需是 public static 的 類別中的function必須是 public static 類型 function的第一個傳入參數必須要加上 this 的關鍵字,而隨後跟著的是要擴充的類別名稱 需要傳入參數的話,則在function中的第二個參數加入想要傳入的參數型態以及名稱 這樣子,就可以幫現有的類別加上擴充方法了;有部分有沒有覺得很奇怪呢?為什麼擴充方法中,第一個傳入的參數是想要擴充的類別型態,又宣告了一個參數,但是都沒有用到阿?這參數是甚麼?這個來設個中斷點,看一下下圖應該就很清楚了 原來第一個參數的內容會是"執行個體"的內容。

移動無邊框的Form

這篇是回應網友問題便測試看看,語言是用C#,有興趣的朋友可以參考看看 using System.Runtime.InteropServices; namespace WindowsApplication1 { public partial class Form1 : Form { const int WM_SYSCOMMAND = 0x112; const int SC_MOVE = 0xF012; [DllImport("user32",EntryPoint="ReleaseCapture",CharSet=CharSet.Ansi)] private extern static int ReleaseCapture (); [DllImport("user32",EntryPoint="SendMessageA",CharSet=CharSet.Ansi)] private extern static int SendMessage (IntPtr hwnd , int wMsg , int wParam, int lParam ) ; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void Form1_MouseDown(object sender, MouseEventArgs e) { int i ; i = ReleaseCapture(); i = SendMessage(this.Handle , WM_SYSCOMMAND, SC_MOVE, 0); } } }