C# や VB で Windows 用デスクトップアプリケーションを作るときに使う「コントロール」の画像付き一覧が意外にもなさそうだったので自作してまとめてみました。 Show
間違いなどありましたらページ上部にある GitHub リンクから修正リクエストをお願いいたします。 環境
.NET(C#/VB) の全コントロール一覧アルファベット順です。 BackgroundWorkerクラス定義:System.ComponentModel.Component.BackgroundWorker バックグラウンドで非同期処理を行うためのクラス。ダウンロードのような長い時間を必要とする処理を動かしつつ、UI の即時応答性は損ないたくない場合に便利。 BindingNavigatorクラス定義:System.Windows.Forms.ToolStrip.BindingNavigator データバインディング先のデータを操作できる UI を表示する。BindingSource とセットで利用するのが基本。 BindingSourceクラス定義:System.ComponentModel.Component.BindingSource データとフォームを紐付け、片方の変更をもう一方にも反映させる仕組み(データバインディング)を利用するためのデータセット。 Buttonクラス定義:System.Windows.Forms.ButtonBase.Button あらゆる操作のトリガーになる Windows 標準のボタンコントロール。最も利用機会が多いコントロールのひとつ。 CheckBoxクラス定義:System.Windows.Forms.ButtonBase.CheckBox 条件変数として使用可能なトグルボタンとなるチェックボックス。Button、RadioButton と並んで使用頻度が高い。 CheckedListBoxクラス定義:System.Windows.Forms.ListBox.CheckListBox 各項目の左側にチェックボックス付きで表示できるリスト。データの複数選択などの処理がある場合便利。ListBox の継承クラス。 ColorDialogクラス定義:System.Windows.Forms.CommonDialog.ColorDialog いつもの Windows 標準カラーピッカー。使い勝手はイマイチ。 ComboBoxクラス定義:System.Windows.Forms.ListControl.ComboBox リストからユーザーが任意の値を選択できるコンボボックスを提供する。これも一般的なフォームコントロール。 クラス定義:System.Windows.Forms.ToolStripDropDownMenu.ContextMenuStrip コンテキストメニュー、つまり右クリックメニューを実装するためのクラス。どのコントロール(Form)と紐付けるか指定するのを忘れないように。 DataGridViewクラス定義:System.Windows.Forms.Control.DataGridView 自由に加工可能なデータ一覧をグリッド形式(表)で表示できるフォーム。やや複雑だが便利。 DataSetクラス定義:System.ComponentModel.MarshalByValueComponent.DataSet アプリケーションがデータベースに常に接続しておかないようにする(非接続型モデル)ことを目的として、クライアント上で使用するデータをキャッシュとしてメモリに保管しておくためのクラス。主に ADO.NET で使われる。 DateTimePickerクラス定義:System.Windows.Forms.Control.DateTimePicker ユーザーが好きな日時を選択し、それを任意の書式で表示させるためのコントロール。 DirectoryEntryクラス定義:System.ComponentModel.Component.DirectoryEntry 同じネットワーク上のデバイス(プリンタなど)やユーザーなど各種 AD(アクティブ・ディレクトリ)ドメインを扱うときに使用する。WinNT をはじめとする ADSI でデータの更新・読み取りなどにあたるような機能。 DirectorySearcherクラス定義:System.ComponentModel.Component.DirectorySearcher AD(アクティブ・ディレクトリ)に対して SQL のようなクエリを実行するためのクラス。名前の通りノードの探索に使う。 DomainUpDownクラス定義:System.Windows.Forms.UpDownBase.DomainUpDown 文字列値を選択できるアップダウンコントロール(スピンボックス)を提供する。どちらかというと NumericUpDown で数値の上下をする方が一般的。 ErrorProviderクラス定義:System.ComponentModel.Component.ErrorProvider コントロールに対する入力エラーなどを通知するための UI。各コントロール要素でエラー説明文字列などを定義しておくと、表示速度や点滅可否等の設定とともにアイコンを表示できる。 EventLogクラス定義:System.ComponentModel.Component.EventLog Windows のイベントログへアクセスするための機能。EventLog クラスを使用するアプリケーションは管理者として実行する必要があることに留意する。 FileSystemWatcherクラス定義:System.ComponentModel.Component.FileSystemWatcher ファイルシステムの変更をウォッチし、ディレクトリやファイルの変更に気付くとそれをトリガーにしてイベントを発生させることができる。バッファオーバーランが起きやすい。 FlowLayoutPanelクラス定義:System.Windows.Forms.Panel.FlowLayoutPanel ウィンドウサイズなどに応じた動的なレイアウトが可能になるパネルインターフェース。非常に汎用性が高く、Web で言うレスポンシブデザインのようなニーズを満たせる機能。 FolderBrowserDialogクラス定義:System.Windows.Forms.CommonDialog.FolderBrowserDialog フォルダの選択ダイアログを表示させるためのクラス。「ファイルの選択」ではなく「フォルダの選択」専門であることに注意。 FontDialogクラス定義:System.Windows.Forms.CommonDialog.FontDialog ローカルにインストールされたフォント一覧を表示してユーザーに選択させるダイアログボックス。 GroupBoxクラス定義:System.Windows.Forms.Control.GroupBox コントロール要素をひとかたまりにグループ化するためのもの。ラジオボタンの論理グルーピングに使われるのが一般的。 HelpProviderクラス定義:System.ComponentModel.Component.HelpProvider コントロールに紐付けたヘルプ内容を表示するためのプロバイダ。オンラインヘルプ(.html)やWindows の一般的なヘルプファイル(.chm)への参照を持つ。 HScrollBarクラス定義:System.Windows.Forms.ScrollBar.HScrollBar Windows 標準の水平スクロールバーを表示させる。 ImageListクラス定義:System.ComponentModel.Component.ImageList ListView や TreeView の補助的なコントロールで、画像をリスト化できるようにするためのもの。アイコンが並ぶような UI を作りたいときに使用する。 Labelクラス定義:System.Windows.Forms.Control.Label フォーム上にテキストを表示させるための最もシンプルなコントロール。 LinkLabelクラス定義:System.Windows.Forms.Label.LinkLabel Label にハイパーリンクを付加したコントロール。ヘルプや作者サイト、Donate(寄付)ページなどのリンクを埋め込むのが一般的。 ListBoxクラス定義:System.Windows.Forms.ListControl.ListBox リスト化された項目を表示するためのコントロール。リスト内の項目を検索する機能も実装可能。 ListViewクラス定義:System.Windows.Forms.Control.ListView データをリストで制御できるコントロール。簡易的な DB のような使い方が可能で、メソッドやプロパティもかなり豊富。 MaskedTextBoxクラス定義:System.Windows.Forms.TextBoxBase.MaskedTextBox フォームへの入力に際してバリデーション的なことができるテキストボックス。他言語によくある「各用途に応じたクラス(フォーム)」ではなく、この MaskedTextBox 内でプロパティを使い分けてバリデーション内容を変える。 クラス定義:System.Windows.Forms.ToolStrip.MenuStrip フォーム、つまりウィンドウの上部メニューにあたる部分を定義するためのコントロール。一般的。 MessageQueueクラス定義:System.ComponentModel.Component.MessageQueue メッセージキューサーバーのキューにアクセスするときに使用するラッパー的な要素。作成した MessageQueue オブジェクトで実際のキューへアクセスし、溜まっている通信を送受信するなど制御できる。 MonthCalendarクラス定義:System.Windows.Forms.Control.MonthCalendar 月ごとのカレンダーを表示して日付を選択できるコントロール。 NotifyIconクラス定義:System.ComponentModel.Component.NotifyIcon 通知領域(タスクバー右下)に格納するときのアイコンを作成するコンポーネント。これ自体は UI を持たないので、ContextMenuStrip などと組み合わせて作成する。 NumericUpDownクラス定義:System.Windows.Forms.UpDownBase.NumericUpDown 数値を上下させるスピンボックスを表示させる。これも一般的なコントロールのひとつ。 OpenFileDialogクラス定義:System.Windows.Forms.FileDialog.OpenFileDialog 「ファイルを開く」ダイアログボックス。用意されているプロパティを使用すれば開くファイルの拡張子を指定したりすることも可能。 PageSetupDialogクラス定義:System.Windows.Forms.CommonDialog.PageSetupDialog 印刷時の余白や用紙などの設定をするダイアログウィンドウ。利用するにはドキュメントに対してページ設定の初期化が必要。 Panelクラス定義:System.Windows.Forms.ScrollableControl.Panel コントロールをグループ化するためのもののひとつ。GroupBox との違いはキャプションがないこと、境界線がデフォルトでは非表示であること、スクロールバーを利用できることなどが挙げられる。ラジオボタンの論理グルーピングももちろん可能。 PerformanceCounterクラス定義:System.ComponentModel.Component.PerformanceCounter Windows NT でパフォーマンスカウンターを表示するためのコンポーネント。使用後は型を Dispose する必要がある。 PictureBoxクラス定義:System.Windows.Forms.Control.PictureBox 画像を表示するために使用する汎用的なコントロール。簡単な図線の場合は System.Drawing 名前空間で描画する方がパファーマンスが良い。 PrintDialogクラス定義:System.Windows.Forms.CommonDialog.PrintDialog プリンターと印刷するドキュメントの選択が行えるダイアログボックス。 PrintDocumentクラス定義:System.ComponentModel.Component.PrintDocument 印刷するときにどのドキュメントを対象とするのかを指定するときに使うクラス。前述の PrintDialog などと併用する。 PrintPreviewControlクラス定義:System.Windows.Forms.Control.PrintPreviewControl 印刷プレビューのプレビュー部分本体を表すクラス。ボタンなどの UI は含まれない(PrintPreviewDialog とは別)ので、これを単体で使うことはあまりないと思われる。 PrintPreviewDialogクラス定義:System.Windows.Forms.Form.PrintPreviewDialog Windows 標準の印刷プレビューを使用するためのコントロール。ダイアログボックス(ウィンドウ)として UI を持つ。前述の PrintPreviewControl を内包している。 Processクラス定義:System.ComponentModel.Component.Process システムのプロセスにアクセスするためのクラスオブジェクト。ローカルとリモートどちらのプロセスも扱える。x86/x64 問題、使い終わったプロセスの解放などには注意する。 ProgressBarクラス定義:System.Windows.Forms.Control.ProgressBar Windows のプログレスバーを表示するコントロール。3つのバースタイルから好きなビジュアルを選べる。 PropertyGridクラス定義:System.Windows.Forms.ContainerControl.PropertyGrid 各コントロールのプロパティを表示するためのコントロール。これを使うと、開発者が Visual Studio のプロパティで好きにカスタマイズするのと同じようにユーザーがフォームを作り変えていける。 RadioButtonクラス定義:System.Windows.Forms.ButtonBase.RadioButton グループ化された中から単一の値を選択させたいときに使う UI。GroupBox や Panel との併用が推奨される。 RichTextBoxクラス定義:System.Windows.Forms.TextBoxBase.RichTextBox リッチテキスト形式のテキストボックスを表すコントロール。RTF ファイルを扱うことができるようになっているほか、各書式設定が利用できるようになる。 SaveFileDialogクラス定義:System.Windows.Forms.FileDialog.SaveFileDialog 「名前を付けて保存」ダイアログボックスを表示するためのクラス。よく使う。 SerialPortクラス定義:System.ComponentModel.Component.SerialPort システムのシリアルポート関連の情報にアクセスするためのクラス。ピン状態なども取得できる。 ServiceControllerクラス定義:System.ComponentModel.Component.ServiceController 実行中のサービスの情報取得や各種操作のために利用する。プロセスと似ているが違うもの。 SplitContainerクラス定義:System.Windows.Forms.ContainerControl.SplitContainer フォームを複数のペイン(パネルと呼んでいる)にサイズ可変状態で分割することができる機能。かなり汎用性が高く、FlowLayoutPanel とは違ったレスポンシブチックな UI を実装できる。 Splitterクラス定義:System.Windows.Forms.Control.Splitter 前述の SplitContainer による分割線を単体で示すコントロール。これを単体で使うことは今はなく、互換性の問題だけで残されている。 StatusStripクラス定義:System.Windows.Forms.ToolStrip.StatusStrip Windows におけるステータスバー(ウィンドウの下に張り付いて常に情報を表示するもの)を配置するためのコントロール。 TabControlクラス定義:System.Windows.Forms.Control.TabControl アプリケーションの設定画面でよく使われるようなタブ画面を実装できる。よく使う。 TableLayoutPanelクラス定義:System.Windows.Forms.Panel.TableLayoutPanel 動的にレイアウトされるパネルのテーブル(表)バージョン。格納する値の文字列長が流動的なときに使うと効果的。コントロール自体の整列にも利用したい。 TextBoxクラス定義:System.Windows.Forms.TextBoxBase.TextBox 最も一般的なタイプのテキストボックスコントロール。これ1つでマルチライン対応やパスワードマスクまで対応できる。 Timerクラス定義:System.ComponentModel.Component.Timer 指定したタイミングでイベントトリガーを発生させるために使うコンポーネント。シングルスレッド用の低精度なタイマーなので、より高精度なタイマーを必要とする場合は System.Timers 名前空間にある Timer クラスを使用すると良い。 ToolStripクラス定義:System.Windows.Forms.ScrollableControl.ToolStrip 標準的なツールバー(アイコンなどでショートカットを提供するもの)を実装するためのコンテナ。これまでに登場した各 Strip 系コントロールの基底クラス。 ToolStripContainerクラス定義:System.Windows.Forms.ContainerControl.ToolStripContainer ToolStrip をフォーム内の上下左右好きな場所に配置させるために使うパネル。 ToolTipクラス定義:System.ComponentModel.Component.ToolTip ユーザーがマウスポインターをフォーム上のコントロールにオーバーさせたとき、そのコントロールの説明をポップアップウィンドウで表示する。この仕組み自体をツールチップとも言う。 TrackBarクラス定義:System.Windows.Forms.Control.TrackBar スライダーのこと。特別な用途はなく「値入力のための普通のコントロール」なので、100段階での入力の場合などは同期した NumericUpDown とかを併設しておくと親切かも。 TreeViewクラス定義:System.Windows.Forms.Control.TreeView エクスプローラーに代表されるようなツリー状のUIを提供するクラス。各ノードにオブジェクトを追加していくことで実装する。 VScrollBarクラス定義:System.Windows.Forms.ScrollBar.VScrollBar Windows 標準の垂直スクロールバーを表示させる。 WebBrowserクラス定義:System.Windows.Forms.WebBrowserBase.WebBrowser フォーム内で Web ブラウジング機能を提供するコントロール。あまり使い勝手が良くないので、素直に LinkLabel を使うアプローチなどを検討した方がいいかも。 おわりに見た目が貧相なので敬遠されがちだけれど、実は Windows フォームアプリケーションだけでも UI としてのユースケースは大抵カバーできることがよくわかります。WPF やら UWP やら WinUI 3 やら今は色々ありますが、これからも業務用ツールなどでシンプルな .NET アプリケーションの需要は絶えないでしょう。 この記事がもしお役に立ちましたら、シェアなどしていただけるととても嬉しいです。 |