發表文章

目前顯示的是 4月, 2017的文章

checkBox控制項-多個checkBox加為共同事件並限制只能選取其中一個

 private void Form1_Load(object sender, EventArgs e)         {             //將checkBox2選取改變事件加入checkBox1_CheckedChanged事件成為一個共同事件             checkBox2.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);                   } private void checkBox1_CheckedChanged(object sender, EventArgs e)         {             //以CheckedX記錄並傳回按下的checkBox             CheckBox CheckedX = (CheckBox)sender;             / /不允許在選取性別時同時選取男性與女性                       //針對同時選取的情況,將男女性選取的checkBox.checked皆改為false,再將選取的checkBox.checked屬性改為True                       if ((checkBox1.Checked==true) &&(checkBox2.Checked==true))             {                 checkBox1.Checked = false;                 checkBox2.Checked = false;                 CheckedX.Checked = true;    }   }

SQL連線設定-SQL 連線字串中關於 Persist Security Info 參數的用途

當你在新增連線時,可以選擇 [Save my password] 選項,如果你有勾選,可以點選 [Advanced...] 按鈕查詢透過工具幫你產生的連線字串。 實際儲存在 web.config 的連線參數大概將會長這樣: Data Source =.; Initial Catalog =master; Persist Security Info =True; User ID =sa; Password =xxxx 光透過 Visual Studio 工具上的說明就可大略得知 Persist Security Info 的用途。在預設不加上 Persist Security Info 的情況下,預設為 False,當程式需要進行資料庫連線時,此時會將「敏感資訊」例如:密碼(Password) 等資訊暫存在連線物件中(記憶體裡),當連線建立成功之後,就會立即將「敏感資訊」清除,這能確保記憶體中的「敏感資訊」會立即清除,降低資訊揭露(Information Leakage)的風險,因為這樣的風險也是出現在  OWASP Top 10 (2007)  的第六位 (A6)。 精確的來說,連線資訊是在  SqlConnection  類別的  ConnectionString  屬性或 DbConnection  類別的  ConnectionString  屬性中。 當你將 Persist Security Info 宣告為 True 時,即便連線已經建立,也會將密碼儲存在記憶體中,供後續程式引用,而我們就剛好有一支程式需要在程式執行的過程中取得新的連線,需要用到原本的連線參數,所以需要將 Persist Security Info 宣告為 True 才能正常運作。 其實也不一定要將Persist Security Info 宣告為 True,因為只要將該程式修改成直接從 web.config 中重新讀取 Connection String 即可。 数据库连接前 ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22; Persist Security Info=false " 数据库连接成

C#常用的幾個特殊逸出Escape字元

C# 幾個常用的逸出字元,例如換行,Tab等,如何使斜線\不被視為逸出字元 C#有幾個比較常的用逸出字元,整理如下表 : 跳脫字元 功能說明 \' 單引號 \" 雙引號 \\ 反斜線 \a 發出一聲警告 \b 倒退一個字元  \f Form Feed  \n 換新行  \r 換行並移到最前方 \t 水平方向的Tab \v 垂直方向的Tab  比如說,要達成以下文字的效果 : =============Sample============= 舉例 :          測試 =============Sample============= 說明 : [舉例:] 之後要換新行,而 [測試] 前面有個Tab空格. 字串 = "舉例:\r\n\t測試". 這樣就可以達到以上的效果. 另一個方向去思考個問題,  \r\n 的Length為多少? 一般會很直覺的,答案就是 4 . 但如果這麼簡單,也不用提出來了,答案是 2. 因為斜線 \ 不計,所以 \t 的長度就是 1 而連兩個斜線 \\ ,長度也是1 但如果我們存放的文字剛好有這些逸出字元要怎麼辨?  例如 "C:\test\net" 有兩種做法 : 方法1 : 打兩個斜線 "C:\\test\\net" 方法2 : 在前面加@ @"C:\test\net"  這樣 \t 跟 \n 就不會被視為逸出字元了. 參考 :  MSDN

C#換行、連接符號

寫程式過程中,會遇到需要串很多字串或一行中需要寫很長,為了增加閱讀及維護性,通常會採用換行、連接符號。 範例參考︰ 1. 使用【 + 】符號   -  連接符號 string  strSQL= "SELECT * FROM Flight_Schedule AS F"                          +  " INNER JOIN System_Code AS S"                          +  " ON F.Formno = c.Code_Desc1"                          +  " ORDER BY F.Formno";                   2.使用【 @ 】符號  -  連接符號 string  strSQL=  @" SELECT * FROM Flight_Schedule AS F                                 INNER JOIN System_Code AS S                                 ON F.Formno = c.Code_Desc1                                ORDER BY F.Formno ";   標籤(Label)要換行" <br> " Ex︰ lb_other.Text = "編號:" + lb_sno.Text + " <br> "                         + "姓名:" + Txt_Name + " <br> "                         + "電話:" + Txt_Tel ; 文字盒(TextBox)要換行" \r\n " Ex︰ textBox1.Text = "編號:" + id + " \r\

子類別繼承父類別建構式方法

建構式不會隨著繼承而產生 如果你希望class 2建構式能夠有class 1一樣的功能如下宣告 public class Class1 {   private string aaa="";   private string bbb="";   public Class1()   {   }   public Class1(string input1, int input2)   {     aaa = input1;     bbb=input2;   }   public string ShowA()   {     return aaa;   } } public class Class2:Class1 {   private int ccc="";   public Class2()   {   }   public Class2(string input1, int input2, int input3) : base(input1, input2)    //input3引數在Class才加入   {     aaa=input1;     bbb=input2;     ccc=input3;   }   }

C#基本認知

C#是屬強制型別(Stronged Type)的語言,必須對程式中所使用的資料強制做資料型別檢查。 C#提供的常值包括: 數值常值 字串常值 日期常值 布林常值 物件常值 C#不允許使用未初始化過的變數,因此在宣告變數的同時,須使用等號來初始化變數的初值,如: int myVal = 20; 每行敘述結束後面必須加上分號表示該行敘述到此為止。 Class 類別是用來建構某些相似物的藍圖,物件可視為依類別的描述所建構出來的一個類別的實體或稱個體。class只是用來描述這些類似物件的properties、method,而Class本身並不是實際的物件。 Class只是一種抽象的data type,而Object則是屬於該種data type的實體變數,例如: 在C#的int可以看做是整數類別,卻無法直接用int類別來做加減運算(方法) int A=10; 正確     int B=A+5;正確   int = 20; 錯誤   由上可知int類別可透過宣告來衍生出物件A與B,但類別本身卻不是物件,也不可用來執行。 在C#中屬性又稱為存取子(Accessor),它是一種特殊方法,通常我們會將屬性當成公開(public)的資料成員。若將欄位改成屬性存取時,建議欄位名稱為name或 _name,則屬性名稱則以大寫字母開頭Name來區別。 物件的宣告與建立:   物件定義完成後,先宣告物件,再使用new關鍵字來建立物件實體(Instance)。詳P13-6。

C#初始設定

Assignment operator指派運算子(=)右邊的實數常值會被視為double。因此請使用後置字元f或初始化float變數,如: float x = 3.5F; 若上述宣告中沒有使用後置字元,編譯時就會發生錯誤,因為這樣實際上是嘗試將double值存到float變數內

C#專有詞中英對照

signed 有正負號 / unsigned無正負號 Literal 常值 :表示本身的值,如號碼5或字串"hello" constant 常數 : 以有意義的名稱取代Literal,確保在程式執行中維持相同的值。如X=5 declare 宣告: 賦予該變數一個資料型別以及變數名稱 cast 轉型 :  語法[(cast)變數名稱或運算式] 。如 int k ; double y=0,44; k = (int)y; Exception 例外 : 陳列索引超出範圍或數字碰到除以零、資料型別轉換失敗等都會產生例外。 Instances 個體 protected 成員除可讓自身類別存取外,也可讓子類別存取,是屬於保護層級。 Field 欄位 : 用來描述類別中所包含的值,欄位可用來表示物件的狀態,可用一般的資料型別或類別來宣告。建議以小寫字母或最前面加底線開頭。