|
.NET TIPS DataGridViewコントロールでオートコンプリート機能を使うには?[2.0のみ、C#、VB]デジタルアドバンテージ 遠藤 孝信2006/12/15 |
![]() |
|
|
|
DataGridViewコントロールのテキストボックス列(既定の列)では、セルの編集時や新しい行の追加時に、(セルに埋め込まれた)テキストボックスが使用される。このため、そのテキストボックスに対して、「TIPS:テキストボックスでオートコンプリート機能を使用するには?」で解説しているオートコンプリート機能を有効にすれば、DataGridViveコントロール内でもオートコンプリート機能が利用できるようになる。
以下の画面は、DataGridViewコントロールのセルの編集時にオートコンプリート機能を使用しているところだ。
![]() |
| セルの編集時にオートコンプリート機能を使用したDataGridViewコントロール |
セルの編集時にオートコンプリート機能を利用するには、セルが編集状態になったときに発生するEditingControlShowingイベントのタイミングで、表示されているテキストボックスのオブジェクトを取得し、それに対してオートコンプリート機能に必要なプロパティを設定すればよい。
このようなEditingControlShowingイベント・ハンドラのコードは次のようになる。
| ||
| EditingControlShowingイベント・ハンドラの実装例(上:C#、下:VB) | ||
| このコードでは、すべてのテキストボックス列のセルでオートコンプリート機能が働く。AutoCompleteModeプロパティとAutoCompleteSourceプロパティの設定については「TIPS:テキストボックスでオートコンプリート機能を使用するには?」を参照していただきたい。 |
このコードでは、DataGridViewEditingControlShowingEventArgsオブジェクトのControlプロパティ(=e.Control)で参照されるオブジェクトが、DataGridViewコントロール内に表示されたテキストボックスとなる(編集しているセルがテキストボックス列のセルである場合)。
実際には、このテキストボックスはDataGridViewTextBoxEditingControlクラス(System.Windows.Forms名前空間)のインスタンスであるが、これはTextBoxクラス(System.Windows.Forms名前空間)の派生クラスであるため、TextBox型にキャストできる。
なお上記のコードでは、表示されるすべてのテキストボックスに対してオートコンプリート機能を設定しているため、どの列のセルでもオートコンプリート機能が働いてしまう。特定の列のみでオートコンプリート機能を有効にするには、現在編集中のセルの列をチェックすればよい。これを行っているサンプル・プログラムを次に示す。
このサンプル・プログラムでは3つのテキストボックス列を使用しているが、2列目に対してのみオートコンプリート機能を有効にしている。上記のDataGridViewコントロールの画面は、このプログラムを実行したときのものだ。
| |
| セルでオートコンプリートを行うC#のサンプル・プログラム(dgvautocomp.cs) | |
| |
| セルでオートコンプリートを行うVBのサンプル・プログラム(dgvautocomp.vb) | |
このサンプル・プログラムでは、現在のセルが2列目であればオートコンプリート機能を有効にし、それ以外の列であればオートコンプリート機能をオフにしている。
後者のオフにするという処理は不要に思えるかもしれないが、これを行わないとすべての列でオートコンプリート機能が有効になってしまう。どうやらセルの編集時に毎回テキストボックスが作成されるわけではなく、テキストボックス列全体で単一のテキストボックスのインスタンスが使い回されているようである。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Windowsフォーム 処理対象:DataGridViewコントロール 使用ライブラリ:DataGridViewコントロール 使用ライブラリ:EncoderParameterクラス(System.Drawing.Imaging名前空間) 使用ライブラリ:TextBoxコントロール(System.Windows.Forms名前空間) 使用ライブラリ:DataGridViewTextBoxEditingControl(System.Windows.Forms名前空間) 関連TIPS:テキストボックスでオートコンプリート機能を使用するには? |
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



