原创 調試WPF數據綁定(Data Binding)錯誤

WPF的數據綁定功能很強大,允許你在Xaml文件裏面直接指定控件要綁定數據的屬性,甚至可以綁定到一個函數的返回值裏面。 但是強大方便的背後是增加的調試的難度,有的時候你給出了錯誤的Binding Source和Path,在界面上顯示的結果

原创 COM套間對.NET程序使用COM對象的影響(下)

由於所有的COM對象都會被分配到一個相應的套間裏面,因此在.NET裏面,爲了方便.NET程序調用COM對象,每一個.NET線程都會被分配到一個套間裏面――即使你沒有在代碼裏面指定線程運行的套間。在.NET線程裏面創建的COM對象都會被分配

原创 在WebBrowser控件中獲取鼠標在網頁上點擊的位置

在WebBrowser控件中獲取鼠標在網頁(不是瀏覽器窗口)上點擊的位置,只有代碼了,沒有講解:         private void webBrowser1_DocumentCompleted(object sender, WebB

原创 VC編寫的程序不能在其他機器上運行的解決方案

有的時候,你在Visual C++上面經過好幾個月的辛勤努力,終於將程序編寫完成並且測試完畢,然而當你試圖在客戶的發佈機上運行剛寫好的程序時,有可能會碰到類似下面的錯誤,操作系統告訴你“由於應用程序配置不正確,應用程序未能啓動。重新安裝應

原创 COM套間對.NET程序使用COM對象的影響(上)

在COM時代裏,套間是用來簡化多線程環境下使用COM對象的,然而在.NET裏面,微軟又放棄了套間的概念,這樣給我們在.NET裏面使用COM對象的時候造成了很多的麻煩。例如有的時候你會發現在有的線程裏面創建了COM對象並將它的引用保存在全局

原创 使用ListBox控件來實現直方圖控件(三)

洋洋灑灑幾千言以後,在前一篇文章的最後終於看到一絲曙光了— 至少有一個看起來像直方圖的玩意了。使用ItemsControl來實現直方圖有以下幾個優點: 1.       省去了手工佈局X軸座標上刻度的問題,否則的話,我們必須寫類似下面的代

原创 使用WPF Resource以及Transform等技術實現鼠標控制圖片縮放和移動的效果

程序要實現的目的是通過鼠標來控制圖片的縮放和移動的效果,也就是說可以鼠標在程序界面上拖動圖片,通過鼠標滾輪放大和縮小圖片。這種功能在圖片瀏覽程序裏面再普通不過了,一般來說,如果是在MFC或者Winform裏面實現這兩個功能的話,都是通過處

原创 COM套間對.NET程序使用COM對象的影響(中)

COM裏面,套間是一個 想象中的邊界,用來在多線程環境中安全使用線程安全和線程不安全的COM對象。什麼叫做線程安全的COM對象呢?再多線程環境中,如果這個COM對象自己實現了同步機制,可以被多個線程同時調用而不破壞對象內部數據的完整性的話

原创 VC編寫的程序不能在其他機器上運行的解決方案(續)

我在前面的文章裏面提到由於side-by-side問題導致的VC編寫的程序不能正常啓動的問題的解決方案,這種方法是針對於單個可執行文件的解決方案,但是有的時候你可能會碰到另外一種情況—也是由於side-by-side問題導致的,你的程序支

原创 用C#編寫一個進程外的COM組件

我在以前的一篇文章《COM互操作 - 在VB 腳本里面使用.NET類型》裏面寫過如何在COM客戶端程序裏面使用.NET組件,但是這些.NET組件都屬於進程內的組件,即COM客戶端需要將CLR和.NET組件都加載進自身進程的內存空間裏面才能

原创 使用ListBox控件來實現直方圖控件

最近在做一個WPF方面的項目,需要用到一些統計功能,需要製作一些直方圖和線狀圖。一般來說,傳統的直方圖和線狀圖的編寫方法都是: 1.       確定X軸和Y軸,把刻度分別在X軸和Y軸上畫出來。 2.       畫出X軸和Y軸,比如分別

原创 引起FileNotFoundException原因通用分析過程

有的時候,你在雙擊一個託管程序,或者使用Assembly.Load方法加載一些Assembly的時候,CLR會拋出System.FileNotFoundException,這種異常經常讓人誤解。例如有一個託管程序A,引用了dll B,雖然

原创 C#語法造成的小問題(編譯原理知識)

昨天跟看到一篇帖子,說的是C#裏面針對byte類型的計算,+號操作符和+=操作符對於數據類型的隱式轉換有兩種不同的處理方式,例如下面的代碼是不能編譯通過的: using System;   public class ByteOp {  

原创 使用ListBox控件來實現直方圖控件(二)

前一篇文章裏面講到了實現一個直方圖控件所要注意的問題,既然是一個控件,那麼需要先將給用戶調用的API調用出來。如果讀者有使用Office Excel的經驗的話,就會發現,製作一個直方圖,實際上只需要顯示直方圖的數據就可以了,如下圖所示:

原创 用C#編寫一個進程外的COM組件示例代碼講解

代碼的鏈接在《用C#編寫一個進程外的COM組件》,小技巧:如果你要同時看示例代碼和講解的話,可以用瀏覽器分別打開示例代碼和這篇文章,然後使用Windows提供的縱向平鋪窗口功能就可同時看兩篇文章了。   TestComVisibleCla