Time of Update: 2017-03-11
為什麼有第二版 首先感謝 jenlynn 同學的留言“DATA URL兩種產生方式,C#和HTML5 兩者同一張產生的base64編碼貌似不一樣,能有什麼方法讓他們達成一致嗎”。 其次,在研究這個問題時發現了Bug和異常。 Bug:圖片編碼判斷問題,不管什麼副檔名的都預設使用了PNG編碼。 異常:檢測到 ContextSwitchDeadlock介面預覽針對相關問題的改進方法圖片編碼判斷問題之前主要是忘記了擷取的副檔名前面是帶點.的 相關代碼:string ext =
Time of Update: 2017-03-11
C# Win32控制台應用程式忽略 Ctrl + C,阻止程式退出,這裡使用到了Windows API SetConsoleCtrlHandler函數注意:在VS中調試執行時,在處理常式常式中設定斷點,不會中斷;會提示:無可用源,如:完整範例程式碼:using System;using System.Collections.Generic;using System.Text;using System.Diagnostics;using
Time of Update: 2017-03-11
C#捕獲windows關機事件,在系統關機前做一些自己想做的事;有些時候我們可能想在Windows關機時記錄或處理一些事情,這裡提供幾種方法。方法一: /// <summary> /// 視窗過程的回呼函數 /// </summary> /// <param name="m"></param> protected override void
Time of Update: 2017-03-11
C#匯出List資料到xml檔案,這裡主要用到的是:XmlSerializer 類 (System.Xml.Serialization)將對象序列化到 XML 文檔中和從 XML 文檔中還原序列化對象。XmlSerializer 使您得以控制如何將對象編碼到 XML 中。實體類代碼:/// <summary> /// 使用者實體類 /// /// 注意:類的存取修飾詞必須是:public,否則會出現錯誤: /// 因其保護層級而不可訪問。只能處理公用類型。
Time of Update: 2017-03-11
在實現C#匯出List資料到xml檔案[附源碼]時遇到錯誤:因其保護層級而不可訪問。只能處理公用類型。產生錯誤的程式碼:XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<UserModel>));錯誤原因:以下代碼中類定義為:class UserModel沒有添加public存取修飾詞 /// <summary> /// 使用者實體類 /// ///
Time of Update: 2017-03-11
Windows APIWindows 這個多作業系統除了協調應用程式的執行、分配記憶體、管理資源…之外, 它同時也是一個很大的服務中心,調用這個服務中心的各種服務(每一種服務就是一個函數),可以幫應用程式達到開啟視窗、描繪圖形、使用周邊裝置等目的,由於這些函數服務的對象是應用程式(Application), 所以便稱之為 Application Programming Interface,簡稱 API 函數。WIN32 API也就是Microsoft Windows
Time of Update: 2017-03-11
詳細介紹C#該行已經屬於另一個表的解決方案產生錯誤的代碼:DataTable dtContract_src = Oper.GetDataTable("select * from T_Contract where ProjectID=" + ProjectID_src + " and Flag=0", con_src); foreach (DataRow dr in
Time of Update: 2017-03-11
說在前面關於c#代碼Convert.ToChar(null);出現異常,而object obj = null; Convert.ToChar(obj);//返回’\0’Null 字元問題詳解。 為什麼會想到說這個問題呢? 今天在博樂功能下點評一篇文章“關於System.Convert那些事”中提出了這個問題:Convert.ToChar(null);直接這樣調用,執行時會產生異常; 而以下代碼卻不會出現異常!object obj = null; Convert.ToChar(obj);//返回&
Time of Update: 2017-03-10
前幾天在網上找的資料可以把表單整個載入到選項卡中(見上一篇),這樣實現起來非常好用,多視窗顯示也方便了很多。在把視窗都加入後,我想能不能在主表單上傳遞參數給載入到選項卡上的表單呢,比如傳遞查詢的參數之類。 1、建立2個表單: 主表單Form1, 子表單Form2設定Form1上的textBox1為public,便於把textBox1直接傳遞過去,當然也可以只傳遞字串首先使用上一篇的代碼將form2加入到form1的選項卡中,這裡設定點擊generatefm按鈕時執行這個事件 private
Time of Update: 2017-03-10
我的上一篇文章已經闡述了“32位程式和64位程式在64位平台上讀\寫註冊表的區別”,那麼接下來將要回答上篇所留下來的一個問題:32位程式如何訪問64位系統註冊表(即:64位程式所訪問的註冊表位置)。 我們已經知道: ①:原生模式 64 位元程式運行在純模式下,並且訪問鍵和儲存在以下註冊表子鍵中的值:HKEY_LOCAL_MACHINE\Software ②:32 位程式運行在 WOW64
Time of Update: 2017-03-10
最近需要做的一個項目,為了避免從菜單中選擇的麻煩,需要把幾個表單整合到一起,通過TabControl選項卡來切換,這樣的設計實現在一定程度上也是實現了代碼的複用,擴充思路來說我們可以把一些小的功能做到表單裡在需要的時候在容器中載入即可,這樣也可以避免使用使用者控制項時經常報錯的問題。這個功能和之前做的一個通過菜單選擇將表單載入到選項卡中類似,不同的是激發的源頭不同,我們來看一下吧。 專案檔組織:
Time of Update: 2017-03-10
通達OA中採用了PHP的語言來進行編程,同樣對於IM的有些操作則採用了Socket的方式進行通訊。最近做的一個程式需要採用C#來做,裡面涉及到這塊,採用C#進行了重寫,具體還需要進一步進行測試效果。using System;using System.Collections.Generic;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;namespace
Time of Update: 2017-03-10
這個例子只是簡單實現了如何使用 Socket 類實現連線導向的通訊。注意:此例子的目的只是為了說明用通訊端寫程式的大概思路,而不是實際項目中的使用程式。在這個例子中,實際上還有很多問題沒有解決,如訊息邊界問題、連接埠號碼是否被佔用、訊息命令的解析問題等。。下面是兩個程式的代碼,(兩個程式均為控制台程式)先發服務端的(Server)完整代碼如下:引入命名空間:using System.Net.Sockets;using System.Net;using
Time of Update: 2017-03-10
調試及發布程式時,經常需要將一些資訊輸出儲存,這裡寫了一個自己的日誌記錄類,記錄資訊更方便了。需要的話還可以進行更多的擴充,比如記錄異常資訊等。using System;using System.IO;namespace WindowsFormsApplication1{ public static class LogerHelper { #region 建立日誌 ///------------------------------------------
Time of Update: 2017-03-10
一般設計fastReport報表時可以直接把資料庫連接資訊儲存到報表裡,但是這樣存在一個嚴重的安全性問題,就是如何用戶端使用設計器重新開啟報表時是能夠看到資料庫的帳號和密碼的,這樣對於資料庫系統是很不安全的,因此這裡我們做了一些設定把帳號資訊從報表中去除。開啟報表設計師,找到資料連線項,把屬性中的ConncetionString中儲存的串連資訊刪除。當然直接這樣刪除,報表就找不到資料了,因此我們還要在程式中把資料庫連接資訊發給報表。程式中我們是直接從資料庫讀取的資料存放區到dataset中,然後
Time of Update: 2017-03-10
可以使用DataContractJsonSerializer類將類型執行個體序列化為JSON字串,並將JSON字串還原序列化為類型執行個體。 DataContractJsonSerializer在System.Runtime.Serialization.Json命名空間下,.NET Framework 3.5包含在System.ServiceModel.Web.dll中,需要添加對其的引用;.NET Framework
Time of Update: 2017-03-10
單機版程式上傳,只能上傳到本地目錄,並不適合網路應用,看來只能單機版能這麼用。網路程式要使用上傳圖片還得繼續改造。private void btnUpload_Click(object sender, EventArgs e){ OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "請選擇上傳的圖片";
Time of Update: 2017-03-10
原來程式使用的Word和Excel來做一些匯出資料和列印的操作,可是運行一段時間發現總有一些使用者的電腦上安裝的Office有些問題,還需要重新安裝調整造成一些額外的維護工作。這裡通過簡單嘗試使用FastReport來代替Office,將一些需要匯出的資料以報表的形式產生,需要的話可以另存成excel格式,這樣就能減少一些不必要的麻煩。程式裡將串連資訊從報表中提出來,避免報表檔案的不安全,另外這個串連資訊可以單獨做到設定檔中即可。using System;using
Time of Update: 2017-03-10
用Visual Studio等IDE寫C#的Hello World非常簡單,但脫離了IDE你能不能列印出Hello World呢?這不是說工作時脫離IDE,而是學習一下CLR的執行模型. Hello World 1、建立一個記事本,輸入如下代碼,另存新檔HelloWorld.txt。using System;namespace HelloWorld{ class Program { static void Main(string[] args) {
Time of Update: 2017-03-10
引言 開發人員總是喜歡就編碼規範進行爭論,但更重要的是如何能夠在項目中自始至終地遵循編碼規範,以保證項目代碼的一致性。並且團隊中的所有人都需要明確編碼規範所起到的作用。在這篇文章中,我會介紹一些在我多年的從業過程中所學習和總結的一些較好的實踐。 舉例為先 我們先來看一個 FizzBuzz 樣本。FizzBuzz 要求編寫一個程式,遍曆從 1 到 100 的數字。其中如果某數字是 3 的倍數,則程式輸出 “Fizz”。如果某數字是 5 的倍數,則輸出 “Buzz”。如果某數字即是 3