【.NET】C# や VB で使う全コントロール一覧(サンプル画像付き)

C# や VB で Windows 用デスクトップアプリケーションを作るときに使う「コントロール」の画像付き一覧が意外にもなさそうだったので自作してまとめてみました。

間違いなどありましたらページ上部にある GitHub リンクから修正リクエストをお願いいたします。
※画像はすべてオリジナルなので無断転載はご遠慮ください

環境

  • Windows 10 Home 64bit
  • Visual Studio Community 2019, ver16.4.3
  • .NET Framework, ver4.8.03752(コントロールリストの確認に使ったプロジェクトのターゲットバージョンは 4.7.2)

.NET(C#/VB) の全コントロール一覧

アルファベット順です。

BackgroundWorker

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.BackgroundWorker

バックグラウンドで非同期処理を行うためのクラス。ダウンロードのような長い時間を必要とする処理を動かしつつ、UI の即時応答性は損ないたくない場合に便利。

BindingNavigator

bindingnavigator

クラス定義:System.Windows.Forms.ToolStrip.BindingNavigator

データバインディング先のデータを操作できる UI を表示する。BindingSource とセットで利用するのが基本。

BindingSource

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.BindingSource

データとフォームを紐付け、片方の変更をもう一方にも反映させる仕組み(データバインディング)を利用するためのデータセット。

Button

クラス定義:System.Windows.Forms.ButtonBase.Button

あらゆる操作のトリガーになる Windows 標準のボタンコントロール。最も利用機会が多いコントロールのひとつ。

CheckBox

checkbox

クラス定義:System.Windows.Forms.ButtonBase.CheckBox

条件変数として使用可能なトグルボタンとなるチェックボックス。Button、RadioButton と並んで使用頻度が高い。

CheckedListBox

checkedlistbox

クラス定義:System.Windows.Forms.ListBox.CheckListBox

各項目の左側にチェックボックス付きで表示できるリスト。データの複数選択などの処理がある場合便利。ListBox の継承クラス。

ColorDialog

colordialog

クラス定義:System.Windows.Forms.CommonDialog.ColorDialog

いつもの Windows 標準カラーピッカー。使い勝手はイマイチ。

ComboBox

combobox

クラス定義:System.Windows.Forms.ListControl.ComboBox

リストからユーザーが任意の値を選択できるコンボボックスを提供する。これも一般的なフォームコントロール。

ContextMenuStrip

dot-net-control-that-has-no-ui

クラス定義:System.Windows.Forms.ToolStripDropDownMenu.ContextMenuStrip

コンテキストメニュー、つまり右クリックメニューを実装するためのクラス。どのコントロール(Form)と紐付けるか指定するのを忘れないように。

DataGridView

datagridview

クラス定義:System.Windows.Forms.Control.DataGridView

自由に加工可能なデータ一覧をグリッド形式(表)で表示できるフォーム。やや複雑だが便利。

DataSet

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.MarshalByValueComponent.DataSet

アプリケーションがデータベースに常に接続しておかないようにする(非接続型モデル)ことを目的として、クライアント上で使用するデータをキャッシュとしてメモリに保管しておくためのクラス。主に ADO.NET で使われる。

DateTimePicker

datetimepicker

クラス定義:System.Windows.Forms.Control.DateTimePicker

ユーザーが好きな日時を選択し、それを任意の書式で表示させるためのコントロール。

DirectoryEntry

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.DirectoryEntry

同じネットワーク上のデバイス(プリンタなど)やユーザーなど各種 AD(アクティブ・ディレクトリ)ドメインを扱うときに使用する。WinNT をはじめとする ADSI でデータの更新・読み取りなどにあたるような機能。

DirectorySearcher

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.DirectorySearcher

AD(アクティブ・ディレクトリ)に対して SQL のようなクエリを実行するためのクラス。名前の通りノードの探索に使う。

DomainUpDown

domainupdown

クラス定義:System.Windows.Forms.UpDownBase.DomainUpDown

文字列値を選択できるアップダウンコントロール(スピンボックス)を提供する。どちらかというと NumericUpDown で数値の上下をする方が一般的。

ErrorProvider

errorprovider

クラス定義:System.ComponentModel.Component.ErrorProvider

コントロールに対する入力エラーなどを通知するための UI。各コントロール要素でエラー説明文字列などを定義しておくと、表示速度や点滅可否等の設定とともにアイコンを表示できる。

EventLog

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.EventLog

Windows のイベントログへアクセスするための機能。EventLog クラスを使用するアプリケーションは管理者として実行する必要があることに留意する。

FileSystemWatcher

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.FileSystemWatcher

ファイルシステムの変更をウォッチし、ディレクトリやファイルの変更に気付くとそれをトリガーにしてイベントを発生させることができる。バッファオーバーランが起きやすい。

FlowLayoutPanel

flowlayoutpanel

クラス定義:System.Windows.Forms.Panel.FlowLayoutPanel

ウィンドウサイズなどに応じた動的なレイアウトが可能になるパネルインターフェース。非常に汎用性が高く、Web で言うレスポンシブデザインのようなニーズを満たせる機能。

FolderBrowserDialog

folderbrowserdialog

クラス定義:System.Windows.Forms.CommonDialog.FolderBrowserDialog

フォルダの選択ダイアログを表示させるためのクラス。「ファイルの選択」ではなく「フォルダの選択」専門であることに注意。

FontDialog

fontdialog

クラス定義:System.Windows.Forms.CommonDialog.FontDialog

ローカルにインストールされたフォント一覧を表示してユーザーに選択させるダイアログボックス。

GroupBox

groupbox

クラス定義:System.Windows.Forms.Control.GroupBox

コントロール要素をひとかたまりにグループ化するためのもの。ラジオボタンの論理グルーピングに使われるのが一般的。

HelpProvider

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.HelpProvider

コントロールに紐付けたヘルプ内容を表示するためのプロバイダ。オンラインヘルプ(.html)やWindows の一般的なヘルプファイル(.chm)への参照を持つ。

HScrollBar

hscrollbar

クラス定義:System.Windows.Forms.ScrollBar.HScrollBar

Windows 標準の水平スクロールバーを表示させる。

ImageList

imagelist

クラス定義:System.ComponentModel.Component.ImageList

ListView や TreeView の補助的なコントロールで、画像をリスト化できるようにするためのもの。アイコンが並ぶような UI を作りたいときに使用する。

Label

label

クラス定義:System.Windows.Forms.Control.Label

フォーム上にテキストを表示させるための最もシンプルなコントロール。

LinkLabel

linklabel

クラス定義:System.Windows.Forms.Label.LinkLabel

Label にハイパーリンクを付加したコントロール。ヘルプや作者サイト、Donate(寄付)ページなどのリンクを埋め込むのが一般的。

ListBox

listbox

クラス定義:System.Windows.Forms.ListControl.ListBox

リスト化された項目を表示するためのコントロール。リスト内の項目を検索する機能も実装可能。

ListView

listview

クラス定義:System.Windows.Forms.Control.ListView

データをリストで制御できるコントロール。簡易的な DB のような使い方が可能で、メソッドやプロパティもかなり豊富。

MaskedTextBox

maskedtextbox

クラス定義:System.Windows.Forms.TextBoxBase.MaskedTextBox

フォームへの入力に際してバリデーション的なことができるテキストボックス。他言語によくある「各用途に応じたクラス(フォーム)」ではなく、この MaskedTextBox 内でプロパティを使い分けてバリデーション内容を変える。

menustrip

クラス定義:System.Windows.Forms.ToolStrip.MenuStrip

フォーム、つまりウィンドウの上部メニューにあたる部分を定義するためのコントロール。一般的。

MessageQueue

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.MessageQueue

メッセージキューサーバーのキューにアクセスするときに使用するラッパー的な要素。作成した MessageQueue オブジェクトで実際のキューへアクセスし、溜まっている通信を送受信するなど制御できる。

MonthCalendar

monthcalendar

クラス定義:System.Windows.Forms.Control.MonthCalendar

月ごとのカレンダーを表示して日付を選択できるコントロール。

NotifyIcon

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.NotifyIcon

通知領域(タスクバー右下)に格納するときのアイコンを作成するコンポーネント。これ自体は UI を持たないので、ContextMenuStrip などと組み合わせて作成する。

NumericUpDown

numricupdown

クラス定義:System.Windows.Forms.UpDownBase.NumericUpDown

数値を上下させるスピンボックスを表示させる。これも一般的なコントロールのひとつ。

OpenFileDialog

openfiledialog

クラス定義:System.Windows.Forms.FileDialog.OpenFileDialog

「ファイルを開く」ダイアログボックス。用意されているプロパティを使用すれば開くファイルの拡張子を指定したりすることも可能。

PageSetupDialog

pagesetupdialog

クラス定義:System.Windows.Forms.CommonDialog.PageSetupDialog

印刷時の余白や用紙などの設定をするダイアログウィンドウ。利用するにはドキュメントに対してページ設定の初期化が必要。

Panel

panel

クラス定義:System.Windows.Forms.ScrollableControl.Panel

コントロールをグループ化するためのもののひとつ。GroupBox との違いはキャプションがないこと、境界線がデフォルトでは非表示であること、スクロールバーを利用できることなどが挙げられる。ラジオボタンの論理グルーピングももちろん可能。

PerformanceCounter

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.PerformanceCounter

Windows NT でパフォーマンスカウンターを表示するためのコンポーネント。使用後は型を Dispose する必要がある。

PictureBox

picturebox

クラス定義:System.Windows.Forms.Control.PictureBox

画像を表示するために使用する汎用的なコントロール。簡単な図線の場合は System.Drawing 名前空間で描画する方がパファーマンスが良い。

PrintDialog

PrintDialog

クラス定義:System.Windows.Forms.CommonDialog.PrintDialog

プリンターと印刷するドキュメントの選択が行えるダイアログボックス。

PrintDocument

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.PrintDocument

印刷するときにどのドキュメントを対象とするのかを指定するときに使うクラス。前述の PrintDialog などと併用する。

PrintPreviewControl

dot-net-control-that-has-no-ui

クラス定義:System.Windows.Forms.Control.PrintPreviewControl

印刷プレビューのプレビュー部分本体を表すクラス。ボタンなどの UI は含まれない(PrintPreviewDialog とは別)ので、これを単体で使うことはあまりないと思われる。

PrintPreviewDialog

PrintPreviewDialog

クラス定義:System.Windows.Forms.Form.PrintPreviewDialog

Windows 標準の印刷プレビューを使用するためのコントロール。ダイアログボックス(ウィンドウ)として UI を持つ。前述の PrintPreviewControl を内包している。

Process

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.Process

システムのプロセスにアクセスするためのクラスオブジェクト。ローカルとリモートどちらのプロセスも扱える。x86/x64 問題、使い終わったプロセスの解放などには注意する。

ProgressBar

progressbaar

クラス定義:System.Windows.Forms.Control.ProgressBar

Windows のプログレスバーを表示するコントロール。3つのバースタイルから好きなビジュアルを選べる。

PropertyGrid

PropertyGrid

クラス定義:System.Windows.Forms.ContainerControl.PropertyGrid

各コントロールのプロパティを表示するためのコントロール。これを使うと、開発者が Visual Studio のプロパティで好きにカスタマイズするのと同じようにユーザーがフォームを作り変えていける。

RadioButton

radiobutton

クラス定義:System.Windows.Forms.ButtonBase.RadioButton

グループ化された中から単一の値を選択させたいときに使う UI。GroupBox や Panel との併用が推奨される。

RichTextBox

RichTextBox

クラス定義:System.Windows.Forms.TextBoxBase.RichTextBox

リッチテキスト形式のテキストボックスを表すコントロール。RTF ファイルを扱うことができるようになっているほか、各書式設定が利用できるようになる。

SaveFileDialog

SaveFileDialog

クラス定義:System.Windows.Forms.FileDialog.SaveFileDialog

「名前を付けて保存」ダイアログボックスを表示するためのクラス。よく使う。

SerialPort

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.SerialPort

システムのシリアルポート関連の情報にアクセスするためのクラス。ピン状態なども取得できる。

ServiceController

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.ServiceController

実行中のサービスの情報取得や各種操作のために利用する。プロセスと似ているが違うもの。

SplitContainer

SplitContainer

クラス定義:System.Windows.Forms.ContainerControl.SplitContainer

フォームを複数のペイン(パネルと呼んでいる)にサイズ可変状態で分割することができる機能。かなり汎用性が高く、FlowLayoutPanel とは違ったレスポンシブチックな UI を実装できる。

Splitter

dot-net-control-that-has-no-ui

クラス定義:System.Windows.Forms.Control.Splitter

前述の SplitContainer による分割線を単体で示すコントロール。これを単体で使うことは今はなく、互換性の問題だけで残されている。

StatusStrip

StatusStrip

クラス定義:System.Windows.Forms.ToolStrip.StatusStrip

Windows におけるステータスバー(ウィンドウの下に張り付いて常に情報を表示するもの)を配置するためのコントロール。

TabControl

TabControl

クラス定義:System.Windows.Forms.Control.TabControl

アプリケーションの設定画面でよく使われるようなタブ画面を実装できる。よく使う。

TableLayoutPanel

TableLayoutPanel

クラス定義:System.Windows.Forms.Panel.TableLayoutPanel

動的にレイアウトされるパネルのテーブル(表)バージョン。格納する値の文字列長が流動的なときに使うと効果的。コントロール自体の整列にも利用したい。

TextBox

textbox

クラス定義:System.Windows.Forms.TextBoxBase.TextBox

最も一般的なタイプのテキストボックスコントロール。これ1つでマルチライン対応やパスワードマスクまで対応できる。

Timer

dot-net-control-that-has-no-ui

クラス定義:System.ComponentModel.Component.Timer

指定したタイミングでイベントトリガーを発生させるために使うコンポーネント。シングルスレッド用の低精度なタイマーなので、より高精度なタイマーを必要とする場合は System.Timers 名前空間にある Timer クラスを使用すると良い。

ToolStrip

ToolStrip

クラス定義:System.Windows.Forms.ScrollableControl.ToolStrip

標準的なツールバー(アイコンなどでショートカットを提供するもの)を実装するためのコンテナ。これまでに登場した各 Strip 系コントロールの基底クラス。

ToolStripContainer

ToolStripContainer

クラス定義:System.Windows.Forms.ContainerControl.ToolStripContainer

ToolStrip をフォーム内の上下左右好きな場所に配置させるために使うパネル。

ToolTip

tooltip

クラス定義:System.ComponentModel.Component.ToolTip

ユーザーがマウスポインターをフォーム上のコントロールにオーバーさせたとき、そのコントロールの説明をポップアップウィンドウで表示する。この仕組み自体をツールチップとも言う。

TrackBar

TrackBar

クラス定義:System.Windows.Forms.Control.TrackBar

スライダーのこと。特別な用途はなく「値入力のための普通のコントロール」なので、100段階での入力の場合などは同期した NumericUpDown とかを併設しておくと親切かも。

TreeView

TreeView

クラス定義:System.Windows.Forms.Control.TreeView

エクスプローラーに代表されるようなツリー状のUIを提供するクラス。各ノードにオブジェクトを追加していくことで実装する。

VScrollBar

vscrollbar

クラス定義:System.Windows.Forms.ScrollBar.VScrollBar

Windows 標準の垂直スクロールバーを表示させる。

WebBrowser

webbrowser

クラス定義:System.Windows.Forms.WebBrowserBase.WebBrowser

フォーム内で Web ブラウジング機能を提供するコントロール。あまり使い勝手が良くないので、素直に LinkLabel を使うアプローチなどを検討した方がいいかも。

おわりに

見た目が貧相なので敬遠されがちだけれど、実は Windows フォームアプリケーションだけでも UI としてのユースケースは大抵カバーできることがよくわかります。WPF やら UWP やら WinUI 3 やら今は色々ありますが、これからも業務用ツールなどでシンプルな .NET アプリケーションの需要は絶えないでしょう。

この記事がもしお役に立ちましたら、シェアなどしていただけるととても嬉しいです。