WindowsForm 工具箱元件介紹

剛剛在工作的時候,突然看到一個元件的用法,雖然是ASP的WebForm的元件

發覺,VS越來越多元件,但許多不太會用到,根本不知道原來這元件能達到這功能

所以想到做個整理,以下文章,會慢慢補充,目標是把目前使用的 VS 2015和2017所有的元件

包含Wiindow Form, WPF, WebForm,三種模式下的基礎元件(微軟VS官方內建的)

都認識一遍,文章內的使用介紹基本上是我的想法,所以有些可能會有錯誤請自行評估

至於元件的用法跟範例就請自行Google,我只是初步介紹功能而已

所有元件都會附上MSDN的網址,有興趣深入了解的可自行觀看

寫這文章的時候發掘許多沒用過的工具箱元件。有些功能挺有趣

因為以前沒用過,所以不知道原來微軟已經有提供這功能可直接使用


BackgroundWorker - 元件 - VS2015

介紹:方便做執行緒的元件,為了避免UI因為執行某些Method因為運行太久

造成無回應,利用BackgroundWorker元件來做背景執行。

補充一下比較不相關的,UI通常如果透過不同執行緒去執行資料修改或變化

都會出現錯誤 跨執行緒作業無效: 存取控制項 'xxx' 時所使用的執行緒與建立控制項的執行緒不同

這時候比較方便解法是在 Form設CheckForIllegalCrossThreadCalls = false;

只是微軟不推薦此作法,除了跟效能有關係之外,也容易造成其他錯誤

(忘記在哪位前輩的文章看過分析,有機會找到再補充)

BindingNavigator - 資料 - VS2015

介紹:用來對應BindingSource的巡覽控制項,使用說明可參考MSDN

附上圖片比較容易理解

BindingSource - 資料 - VS2015

介紹:用來做資料繫結用的控制項,使用說明可參考MSDN

簡單說明資料繫結,在我認知上,UI的資料跟程式的資料是不同的

通常UI資料如Text的變動,在程式上要自行去抓取該UI的Text,然後再存回程式用的資料

利用資料繫結,將兩個關係做綁定(Binding),即可達到UI的Text改變後

程式內的資料就會變更(資料來源是同樣一個)。

Button - 通用控制項 - VS2015

介紹:按鈕,就是按鈕。不知道按鈕是什麼請看Wiki

雖然我看了Wiki還是不懂。

Button算是最常用的元件之一

CheckBox - 通用控制項 - VS2015

介紹:選取框(選取按鈕),常用元件之一。用來作勾選使用

微軟的說明是"使用 CheckBox 要提供使用者一個選項,例如 true/false 或 yes/no。"

CheckedListBox - 通用控制項 - VS2015

介紹:簡單來說就是一個集中存放CheckBox元件的控制項。

附上圖片比較好理解,項目內容可自訂

ColorDialog - 對話方塊 - VS2015

介紹:一個顏色選取的對話框,如下圖

ComboBox - 通用控制項 - VS2015

介紹:下拉式選單,也是挺常用的元件

ContextMenuStrip - 功能表與工具列 - VS2015

介紹:上下文選單(右鍵選單),當然不只是做右鍵選單的功能而已。

大部分的進階選項(選單)都可以用ContextMenuStrip做出來。

DataGridView - 資料 - VS2015

介紹:資料圖表元件,可用來顯示資料,新增、修改、刪除。

搭配一些其他元件或是操作,可做到許多功能

不過基礎來說就是顯示資料用的表單(表格)

DataSet - 資料 - VS2015

介紹:資料集元件,很難解釋的一個控制項,網路上也幾乎找不到別人介紹用UI控制項的操作

我自己在使用也幾乎都直接用程式控制沒再用UI控制項,不知為什麼微軟會用在UI控制項上

基本上應該算屬於ADO.NET裡的東西,可能是微軟為了方便不熟ADO.NET的使用者直接用UI做程式吧

個人在使用ADO.NET還是以程式碼去實做居多,所以對我而言應該是很難用到

DateTimePicker - 通用控制項 - VS2015

介紹:時間選取元件,如下圖

DirectoryEntry - 元件 - VS2015

介紹:Active Directory網域用的目錄元件,不過我沒使用過

只是這也是不知道做成UI元件做什麼用的控制項。實際上使用好像都是資料操作而已

UI根本沒東西能看的樣子。搭配其他的元件,用來實做LDAP用途的樣子。

可惜目前我沒需求,暫時不會研究用法。

DirectorySearcher - 元件 - 2015

介紹:Active Directory網域服務查詢。一樣用來實做LDAP用途的樣子。

可惜目前我沒需求,暫時不會研究用法。

DomainUpDown - 所有Windows Form - 2015

介紹:微軟的說明,我個人感覺應該像是 NumericUpDown控制項的文字版本

可以把自行 列的文字選單用 Up 或 Down 做選取

官方說明有提到一段是"這個控制項的功能與清單方塊或下拉式方塊非常類似,但它所佔的空間極少。"

ErrorProvider - 元件 - VS2015

介紹:提示UI資料有錯誤用的元件。不提供判斷,判斷功能需自行填寫

跟ASP.NET的驗證控制項不同(可把判斷功能寫在驗證項)。

這ErrorProvider 只是用來提示錯誤而已。如下圖紅框框起地方(請輸入資料是滑鼠的Tooltip)

EventLog - 元件 - VS2015

介紹:用來Log Event的元件,一樣讓我感覺不需要做成UI控制項的東西

使用說明請參照微軟,只是這說明也是用程式寫的,不是用UI拉的

FileSystemWatcher - 元件 - VS2015

介紹:官方說明"當目錄或目錄內的檔案變更時,接聽 (Listen) 檔案系統變更通知並引發事件。"

就是用來看目錄或檔案是否有變更監控元件。其實大部分元件提供的功能都用程式碼去寫還比較方便

做成UI控制項可能只是要讓使用者知道有這功能吧。

FlowLayoutPanel - 容器 - VS2015

介紹:用來放UI元件的容器,方便做排版使用。

水平或是垂直的元件Layout。通常是相同類型需要好看排版的UI元件在使用

可參照MSDN

FolderBrowserDialog - 對話方塊 - VS2015

介紹:電腦目錄選取對話框,如下圖

FontDialog - 對話方塊 - VS2015

介紹:字型選取的對話框,如下圖

GroupBox - 容器 - VS2015

介紹:拿來裝需要群組化的UI元件。

比較明顯的例子就是在多個RadioButton中,分群組單選

當然不只RadioButton能用。只是其他的群組功能可能就要自行補充

HelpProvider - 元件 - VS2015

介紹:提供開啟說明檔的功能

可參照MSDN

HScrollBar - 所有 Windows Form - VS2015

介紹:水平捲軸,大部分UI元件都有提供垂直跟水平捲軸。

用來給沒內建水平捲軸的UI元件實作使用。

ImageList - 元件 - VS2015

介紹:官方說明"提供方法來管理一堆 Image 物件。"

基本上是管理Image資料用的元件。並不會直接顯示在UI上

Label - 通用控制項 - VS2015

介紹:顯示文字使用的UI元件,也是超常使用到的元件

細項目很多,但主要功能還是顯示文字用途。

LinkLabel - 通用控制項 - VS2015

介紹:有超聯結功能的Label

請參照MSDN

ListBox - 通用控制項 - VS2015

介紹:清單方塊,將列表集合的的選取清單方塊。官方說明"表示要顯示項目清單"

可單選或多選,簡單示意如下圖

ListView - 通用控制項 - VS2015

介紹:跟ListBox用途類似,不過此控制項多半使用在跟圖片結合的清單上。

另外ListView有群組和子項目的功能,簡單來說就是強大版本的ListBox

實際效果可參考 此篇文章

MaskedTextBox - 通用控制項 - VS2015

介紹:有遮罩功能的TextBox,用來限定輸入資料是以符合格式

不想用正規表示式(Regex:Regular Expression)的另一種選擇(快速簡單的選擇)

請參照MSDN。內建的基礎Mask如下圖

MenuStrip - 功能表與工具列 - VS2015

介紹:做功能表的UI控制項,細節可參照MSDN

簡單來說就是做像下圖的東西

功能挺強大的,基本上像是選單快速鍵管理。或是多重選單等等之類的功能。

都是用MenuStrip 來實做。

MessageQueue - 元件 - VS2015

介紹:官方說明"提供存取佇列的訊息佇列伺服器。"

簡單看了一下其他前輩的文章介紹。大致上理解為程式間傳訊息用的元件

可參考 夜闌人靜前輩的 [MSMQ]使用MS Message Queue進行發送/接收訊息

或是 黃偉榮的學習筆記前輩的 使用 MSMQ Tiggers

我因為沒安裝,所以UI元件拉進去會跳錯誤,如下圖

我個人暫時也不太需要用到,所以就先不研究這元件了,了解一下有這功能就好

MonthCalendar - 通用控制項 - VS2015

介紹:月曆元件,選取日期使用的UI控制項,如下圖

NotifyIcon - 通用控制項 - VS2015

介紹:官方說明"指定在通知區域中建立圖示的元件"

就是做右下角系統列上的小圖元件,如下圖

想當初在寫VB6想要做出這功能,找文章找到快死掉還是做不出來

C#後就方便許多了。

NumericUpDown - 通用控制項 - VS2015

介紹:數值用的上下選取控制項。如下圖

OpenFileDialog - 對話方塊 - VS2015

介紹:選擇要開啟檔案用的對話方塊。如下圖

PageSetupDialog - 列印 - VS2015

介紹:設定 列印格式的對話方塊,如下圖

Panel - 容器 - VS2015

介紹:類似GroupBox 一樣的容器,可參照MSDN

官方是說差別在 Panel有捲軸功能,而GroupBox有標題名稱

PerformanceCounter - 元件 - VS2015

介紹:官方說明"代表 Windows NT 效能計數器元件。"

應該是用來查看系統效能數據的元件。很少用到所以不熟

PictureBox - 通用控制項 - VS2015

介紹:顯示圖檔的UI控制項目。就顯示圖片用途,沒啥好說的

PrintDialog - 列印 - VS2015

介紹:選擇列表機以及要列印文件的區段用的對話方塊。如下圖

PrintDocument - 列印 - VS2015

介紹:要列印的文件資料控制項。列印用的控制項我都挺少用到的

使用方法就Google吧

PrintPreviewControl - 列印 - VS2015

介紹:預覽列印的UI控制項,有顯示在畫面上的元件。

並不像是PrintDocument基本上算是裝資料用途的元件。

PrintPreviewDialog - 列印 - VS2015

介紹:開啟預覽列印的對話框,如下圖

Process - 元件 - VS2015

介紹:用來控制處理序(程式)的元件,只要是系統中的處理序理論上都能抓出來控制

最常用也是最快的方法就是拿來開別的軟體。

ProgressBar - 通用控制像 - VS2015

介紹:用來做進度條(進度列)的UI元件。

PropertyGrid - 所有 Windows Form - VS2015

介紹:官方說明"提供使用者介面,以瀏覽物件的屬性。"

理論上應該還有許多不同變化,有需要的人自行去挖掘官方資料吧

目前用到的機會不大,提供一張簡單的示意圖,下圖示我直接將Button的屬性顯示出來圖

RadioButton - 通用控制項 - VS2015

介紹:讓多個RadioButton作單選功能的UI控制項,利用GroupBox之類的元件作群組。

在各群組內多個RadioButton中 只有一個能選取。

RichTextBox - 通用控制項 - VS2015

介紹:提供比較多功能的文字方塊元件,請參閱MSDN

SaveFileDialog - 對話方塊 - VS2015

介紹:官方說明"提示使用者選取儲存檔案的位置。"

效果如下圖

SerialPort - 元件 - VS2015

介紹:官方說明"您可以使用這個類別來控制序列埠檔案資源。"

提供控制電腦上com port 的元件(通常啦),通常一般電腦主機板上的com都是 Serial 的傳輸資料

所以通常是拿來提供跟利用主機板上的(通訊port)(com port)(Serial port)來跟其他設備溝通使用。

比較常見的就RS232。另外因為基本上不太會用到這元件,沒太深入研究,不過應像中

這元件好像不能直接控制USB。網路上找到的資訊也大多是USB轉com port的資料去做傳送

很久以前有做過一個小程式需要去控制USB,當初印象中是利用WIN的API去抓到驅動的資訊

然後透過驅動去做控制。

ServiceController - 元件 - VS2015

介紹:官方說明"表示 Windows 服務,可以讓您連接到執行中或已停止的服務進行管理,或取得關於服務的資訊。"

拿來控制下圖東西的元件,因為不是UI元件,所以基本上看不到畫面

SplitContainer - 容器 - VS2015

介紹:做一個可以分割的容器元件

簡單的效果如下圖

Splitter - 所有 Windows Form - VS2015

介紹:官方說明"表示可讓使用者重新調整停駐的控制項大小的分隔器控制項。 Splitter 已被取代 SplitContainer ,只為了與舊版相容。"

StatusStrip - 功能表與工具列 - VS2015

介紹:官方說明"代表一個 Windows 狀態列控制項。"

簡單來說就是做下圖的東西,一個狀態列

TabControl - 容器 - VS2015

介紹:官方說明"管理一組相關的索引標籤頁。"

做一個分頁的容器。如下圖

TableLayoutPanel -  容器 - VS2015

介紹:提供更多功能的UI Layout容器。簡單效果可參閱微軟這篇文章

TextBox - 通用控制項 - VS2015

介紹:文字方塊,簡單來說就是一個輸入框,讓你可以輸入文字使用的UI控制項

Timer - 元件 - VS2015

介紹:官方說明"實作一個在使用者定義的間隔引發事件的計時器。 最佳化這個計時器以用於 Windows Form 應用程式,並且必須用於視窗中。"

簡單來說就是一個定時器,定時在某段間隔時間內會出發的計時器。最主要是給UI元件使用的

Timer在UI元件溝通上比較不會發生跨執行緒上的問題。而如果自己去做執行緒來當計時器,最終資料結果需要控制到UI畫面

大部分都會出現跨執行緒的錯誤。

ToolStrip - 功能表與工具列 - VS2015

介紹:官方說明"提供 Windows 工具列物件的容器"

另一段說明"ToolStrip 是 MenuStrip、StatusStrip 和 ContextMenuStrip 的基底類別。"

細節請參閱MSDN。簡單來說也就是一樣是作工具列的元件。

因為沒實際上用過,差異在哪並不是很了解。理論上就是提供更多功能的工具列元件

搭配ToolStripContainer可定位在不同位置上。做出像Visual Studio拖拉視窗或是工具列定位到不同位置上

ToolStripContainer -  功能表與工具列 - VS2015

介紹:官方說明"提供表單每一邊上的面板,以及可以保存一或多個控制項的中央面板。"

應該是提供給ToolStrip使用的容器。

理論上應該是能做成像下圖一樣的效果。但沒實際使用經驗。有興趣自行研究這兩種元件吧

ToolTip - 通用控制項 - VS2015

介紹:官方說明"表示小矩形快顯視窗 (Pop-Up Window),它會在使用者將指標停留在控制項上時,顯示控制項用途的簡短說明"

就是拿來做說明用的元件。做一個如下圖一樣,滑鼠移動至某元件上,可以跳出一個浮動的說明文字框

TrackBar - 所有 Windows Form - VS2015

介紹:官方說明"TrackBar 是可捲動的控制項類似 ScrollBar 控制項。 您可以設定透過此範圍的值 Value 屬性的追蹤列捲動藉由設定 Minimum 屬性來指定範圍的下限和 Maximum 屬性來指定範圍的高端。"

就是做一個如下圖一樣的UI元件

TreeView - 通用控制項 - VS2015

介紹:官方說明"顯示標記的項目,來代表每個階層式集合 TreeNode"

簡單來說就是拿來做樹狀結構顯示的UI元件

VScrollBar -  所有 Windows Form - VS2015

介紹:官方說明"代表標準的視窗垂直捲軸。"

跟HScrollBar搭配用的卷軸,一個垂直一個水平。

WebBrowser - 通用控制項 - VS2015

介紹:提供瀏覽網頁的UI控制項。

簡單來說就是利用IE核心來瀏覽網頁的控制項。

我的這一篇文章有簡單的介紹一些用法

更多用法請去Google吧。

ElementHost - WPF互通性 - VS2015

介紹:官方說明"使用 ElementHost 放置控制項 WPF UIElement 上您 Windows Form 控制項或表單。 "

就是可以在Windows Form上放 WPF的UI元件


基本上就先介紹到這邊。未來如果有補充細節

再額外再做說明了