原创 C#用MySql.Data.dll插入Blob數據失敗 [已經解決]

我們在用MySQL數據庫存儲圖片的時候一般都用Blob類型,裏面存儲的是二進制數據,也就是byte[]數組。大家在網上一般都能收到下面類似的代碼,這段代碼是沒有問題的。 但是我這邊怎麼試都無法成功,就是Blob數據插入不進來,其他字段都O

原创 Winform Panel滾動後重繪異常

最近在用Panel時遇到一個問題,就是Panel在滾動後,內部的控件重繪異常。最大化最小化時候重繪沒有問題,只是在拖動滾動條時遇到問題,請看下圖,上面的框框邊緣都是平滑正常的,下面通過滾動條拖出來的框框就出問題了。這個肯定是重繪引起的,網

原创 C#通過 HttpWeReqest 從網址下載文件 [超級簡單]

C#從網址下載文件其實非常簡單,就跟本地寫文件差不多。也不用多說,直接上代碼。有興趣的朋友可以加一個進度條和一個BackgroundWorker做一個動態更新進度的C#文件下載。 public string HttpDownloadF

原创 C# WinForm菜單文字/圖片不顯示 [多語言導致]

今天在調試程序的發時候發現明明Winform界面上的菜單是有文字的,但是到運行的時候就不見掉了,在另一臺電腦上是沒有這個問題的。 最後發現是設置了多語言環境導致的,當我們對窗體設置過多語言之後,新添加控件或者菜單時,記得一定要把控件/菜單

原创 DataRow在DataTable中的行號

今天有個特別的需求,通過Linq篩選DataTable行的時候,需要用到行號,DataRow對象沒有行號這個屬性。 其實我們可以通過Datatable.Rows.IndexOf(DataRow) 來獲取DataRow在DataTable中

原创 製作 Cumulative Frequency Chart [Probability]

這裏簡單介紹一下如何創建 Probability Chart, 關鍵在於如何定位每個數據元在Y軸的位置, 應爲Y軸是非線性分佈的,這裏肯定有一個非線性函數,它就是 Excel中的NormSinv() 如果手上有一組數據 [List /Ar

原创 WinForm default button 窗體的默認按鈕 [AcceptButton]

有時候需要在一個窗體上設置一個默認按鈕,就是當我們按下Enter鍵是需要出發的按鈕。 Form對象都有一個AcceptButton的屬性,設置這個屬性選擇你希望的默認按鈕即可。 設置完之後,對應的按鈕就會有個藍色的外框,代表已經獲得了默認

原创 WinForm實現拖動打開文件

 我們在做UI的時候有時候需要實現拖放文件到我們的Winform然後打開對應的文件,實現的關鍵是如何獲得拖進來的文件名列表。 這裏需要用到Form的DragDrop事件, 下面這一句話就可以獲得拖進來文件的路徑列表。 p

原创 Winform Panel中控件順序顛倒

今天在用C#循環給Panel中添加多個控件實例時,發現最新添加的控件排在最前面,而不是最後面,順序完全顛倒了過來。我們可以把需要的控件反向添加來解決這個問題,但是不是最好的解決方案。 最好的解決方案是每次添加了控件之後設置一下啊Child

原创 DataRow.Field Expression [DataTable動態linq]

我們一般在學習Linq查詢時,查詢條件都是寫死的。但是我們在實際使用過程中肯定不能這樣,而是需要動態創建Linq查詢條件,這裏我們就需要用到Linq.Expression,用Expression來創建查詢條件。

原创 WPF Hatch 筆刷

原文鏈接:https://www.markheath.net/post/creating-hatched-patterned-brush-in-wpf WPF 裏面做Pattern畫刷不像GDI

原创 使用static函數跨類使用backgroundWorker返回執行進度 (ReportProgress)

backgroundWorker是一個非常好用的工具,可以實現異步執行耗時的操作並更新執行進度,防止界面掛起而不響應用戶操作。 屬性和事件介紹 /***** Form1.cs *****/ _bgWorker.WorkerReports

原创 WFP文字旋轉後被剪裁

我在用WPF做文字旋轉是遇到一個問題,旋轉後文字被剪裁掉了,只能顯示部分字符。 下面有xaml代碼中有一個TextBox內容爲“This is a long text will be cut after rotate”, 字符串比較長,我

原创 WPF Label內容自動換行和強制換行

如果在WPF Label裏面的字符串太長,想讓它自動換行,可以用TextBlock實現  <Label MaxWidth="550"> <TextBlock TextWrapping="Wrap" Text="在此輸入要換行的文字,前提

原创 C#通過WMI獲得硬件信息

C#很難繞過WMI去獲得硬件信息,這裏列一下常用的獲得硬件信息的方法。 ManagementClass mc = new ManagementClass("Win32_Processor"); Managemen