剛剛在工作的時候,突然看到一個元件的用法,雖然是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元件在使用
FolderBrowserDialog - 對話方塊 - VS2015
介紹:電腦目錄選取對話框,如下圖
FontDialog - 對話方塊 - VS2015
介紹:字型選取的對話框,如下圖
GroupBox - 容器 - VS2015
介紹:拿來裝需要群組化的UI元件。
比較明顯的例子就是在多個RadioButton中,分群組單選
當然不只RadioButton能用。只是其他的群組功能可能就要自行補充
HelpProvider - 元件 - VS2015
介紹:提供開啟說明檔的功能
HScrollBar - 所有 Windows Form - VS2015
介紹:水平捲軸,大部分UI元件都有提供垂直跟水平捲軸。
用來給沒內建水平捲軸的UI元件實作使用。
ImageList - 元件 - VS2015
介紹:官方說明"提供方法來管理一堆 Image 物件。"
基本上是管理Image資料用的元件。並不會直接顯示在UI上
Label - 通用控制項 - VS2015
介紹:顯示文字使用的UI元件,也是超常使用到的元件
細項目很多,但主要功能還是顯示文字用途。
LinkLabel - 通用控制項 - VS2015
介紹:有超聯結功能的Label
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元件
基本上就先介紹到這邊。未來如果有補充細節
再額外再做說明了