發表文章

[C#] WinForm Runtime Add Control & AutoScroll

最主要就是 容器.Controls.Add(新的Control) 當然在這之前要先將這個新的控制項的屬性包含位置都設定好 panel2.AutoScroll = false;//先將AutoScroll disable, 避免新增控制項位置出錯 if (this.Height < 600) this.Height += 65; //新增新搜尋單元 SearchUnit newsearchunit = new SearchUnit(); newsearchunit.Location = new Point(searchUnit2.Location.X, newitem_Y); newitem_Y += 65;//下一次新增時的位置 this.panel2.Controls.Add(newsearchunit); panel2.AutoScroll = true; panel2.AutoScrollPosition = new Point(0, 9000);//新增後置底 參考資料: https://support.microsoft.com/en-us/help/319266/how-to-programmatically-add-controls-to-windows-forms-at-run-time-by-u

SQLite安裝

圖片
下載頁面: http://www.sqlite.org/download.html 選擇64位元 裡面會有 sqlite3.dll 與 sqlite3.def 兩個檔案 tool也要下載 裡面有 sqlite3.exe sqldiff.exe sqlite3_analyzer.exe 三個檔案 把這些檔案都放到 C:\SQLite下 接下來到系統設定中更改環境變數 在Path下加入 C:\SQLite路徑 最後執行comaand line 將目錄移到C:\後 (windows 的 ls 是 dir) 執行sqlite3 就可以完成安裝 參考資料: http://www.runoob.com/sqlite/sqlite-installation.html

[C#] 連結SQLServer

要使用C#連接到SQL Server主要為三個步驟 SqlConnection SqlCommand SqlDataReader 注意需引用using System.Data.SqlClient SqlConnection: 建立SQL Server連線 須注意伺服器名稱最後為分號 private void ConnectSQLServer(ref SqlConnection conn) { string strConn = "Data Source=172.16.2.17\\RJDB,1433;" + "Initial catalog=Drawings_Demo2;" + "User ID=user;" + "Password=1234;" + "Integrated Security = False";//False才會使用SQL帳號認證 conn = new SqlConnection(strConn); } 再來就是把SQL語法丟進SqlCommannd中,查到的資料會存在SqlDataReader物件中 private SqlDataReader SqlQuest(string str) { ConnectSQLServer(ref myConn); myConn.Open(); SqlCommand myCommand = new SqlCommand(str, myConn); SqlDataReader dr = myCommand.ExecuteReader(); return dr; } 將SqlDataReader中的資料複製到DataTable中 private DataTabl

[C#] TreeNode Merge

private vTreeNode DoMerge(vTreeNode source, vTreeNode target) { if (source == null || target == null) return null; foreach (vTreeNode n in source.Nodes) { // see if there is a match in target vTreeNode match = FindNode(n, target.Nodes); // match paths if (match == null) { // no match was found so add n to the target target.Nodes.Add(n); } else { // a match was found so add the children of match DoMerge(n, match); } } return target; } private vTreeNode FindNode(vTreeNode source, vTreeNodeCollection nodes) { foreach (vTreeNode node in nodes) { if (node.TooltipText == source.TooltipText) return node; } return null;

[C#] Windows Form 自訂控制項

圖片
自訂控制項可以大致分成三類 1. 複合控制項   利用原生的控制項組合成一個單元 2. 擴充控制項   繼承原生控制項,對功能做擴充 3. 自訂控制項   基本上就是從頭寫一個新的 這邊談第一類複合控制項的用法: 專案 -> 加入使用者控制項 之後他就是一個class,繼承自UserControl,也會有design的介面可以拉其他控制項進去 建置過後就會出現在原本專案的工具箱中了 參考資料: https://msdn.microsoft.com/zh-tw/library/ms171725(v=vs.110).aspx https://msdn.microsoft.com/library/3sf86w5h(v=vs.110)

Coding字型

圖片
可以使用windows內建的Consolas 或是用 Adobe Source Code Pro 這是 Medium 最新的Release Roman fonts version 2.030 and Italic fonts version 1.050 (OTF, TTF, WOFF, WOFF2, EOT) 預覽的網頁 https://adobe-fonts.github.io/source-code-pro/

[C#] Delegate

委派: 類似C++的fuction pointer,可以將function當作參數傳入其他function 參考資料: https://eric0806.blogspot.tw/2015/01/dotnet-delegate-usage.html 另外,對於剛接觸的人來說,這篇講得蠻清楚的 http://code2study.blogspot.tw/2011/12/c.html 把用法用很簡單的方式呈現出來