要件定義の不安をなくす。要件定義の不安をなくす。ユニファのバックエンド分割に学ぶイノベーションメタバース開発に必要な技術の基本知識をおさらい。Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。5その他のテクニック日付の表示・編集を和暦で行う漢字を正しい順序でソートするチェックボックス列でチェック時のイベントを発生させるまとめGUIの作成では、さっそくアプリケーションを作成していきます。_Data.mdf」をC1DataGridコントロールに連結し、データをグリッドで表示します。オプションでグループ化が行えるようにしますので、フォームにはC1DataGridコントロールとCheckBoxコントロールを配置します。フォームにC1DataGridコントロールをドラッグアンドドロップし、適当なサイズに広げます。Studioのメニューから「データ-新しいデータソースの追加」を選びクリックします。「データソース構成ウィザード」が表示されます。「データベース」「データセット」を選び、「新しい接続」ボタンをクリックします。_Data.mdf」を選び、「テスト接続」ボタンをクリックして接続OKを確認します。続いてデータベースファイルをプロジェクトにコピーし、接続文字列を確認します。テーブル「収穫量一覧」をクリックし、「完了」ボタンをクリックします。コントロールの上にCheckBoxコントロールを配置し、「Content」プロパティを「グループ化」に変更しClickイベントハンドラを作成します。データベース連結処理ここまでの作成で、C1DataGridコントロールとデータベースファイルが連結されましたので、データを取り出す処理をコードで作成します。2つの参照を設定します。一つは「C1.WPF.DataGrid」名前空間への参照で、もう一つは「データベースへの連結」で作成したテーブルアダプターです。次に、1つの変数とプロシージャ(C#はメソッド)「newds」の宣言を作成します。この中に、クエリを実行してテーブルアダプターにデータを埋める式を記述します。作成したプロシージャ(C#はメソッド)「newds」を、アプリケーション初期化のプロシージャ(C#はメソッド)で呼び出します。これで、アプリケーション起動時にグリッドにデータベースのデータが埋め込まれます。この呼び出しはデザイナーで必要です。呼び出しの後で初期化を追加します。アプリケーションを実行し、グリッドにデータが表示されていることを確認します。続いて、グループ化の処理を作成します。グループ化とは、データを指定した列にある同じデータをグループにする機能です。C1DataGridコントロールでは、CanUserGroupプロパティをTrueに設定すると、グリッドの上部にグループ化専用のエリアが表示され、ここに列名をドラッグアンドドロップするとグループ化が行われます。今回は、CheckBoxコントロールのオンオフ機能を利用して、グループ化の有効・無効を切り替えます。}}CheckBoxコントロールをクリックするとグループ化の領域が表示されるこの領域に列名「地方名」をドラッグアンドドロップするとデータが地方名でグループ化されるまた、セルをクリックするとソート機能が働き、セルをダブルクリックするとそのまま数値を変更できる数値入力ボックスが使え、列見出しをクリックするとフィルタ機能が使えるようになっています。セルをダブルクリックすると数値入力ボックスが使えるようになる列見出しをクリックするとフィルタ機能が使える外観の変更ここまでで、データベースのデータをグリッドで表示でき、グループ化機能も使えるようになりました。あとは、カラーをカスタマイズして見栄えのよい表になるように仕上げます。今回変更する部位は次のとおりです。選択したセルの背景色では、GroupingPanelBackgroundプロパティのグラデーション設定を行ってみます。他のプロパティも同じ操作でカラーパレットを使って変更します。プロパティウィンドウで、GroupingPanelBackgroundプロパティの値欄にある「▼」ボタンをクリックします。カラーパレットが表示されます。デフォルトでは単色モードになっていますので、単色の場合はここで色を作成します。左下にはカラー名で色を選べるリストボックスがあります。カラーピッカーも備えていますので、フォーム上の色を取り出して使うこともできます。グラデーションを作成する場合は、左上の「グラデーションブラシ」アイコンをクリックします。2色をブレンドするツールが表示されます。開始色のポインタをクリックし、色を選びます。終了色のポインタをクリックし、色を選びます。終了色のポインタをクリックし色を設定このようにして、他のプロパティも色を設定していきます。完成したアプリケーション補足なお、行の交互表示の色が、デフォルトではVBとC#で違っています。この交互表示の色を変更したい場合は、「AlternatingRowBackground」プロパティを使用してください。Enterキーでのカレントセルの移動C1DataGridコントロールは、表のようにデフォルトではキーボードの矢印キーを使ってカレントセルを移動できるようになっていますが、これをEnterキーを使ってカレントセルを移動するように変更できます。Enterキーを押した際に下のセルにカレントセルを移動するには、DataGridのKeyDownイベントでCurrentRowロパティの設定をする必要があります。処理はビハインドコードに作成します。c1DataGrid1_KeyDownイベントハンドラを定義します。次に、そのイベントハンドラの中で、現在のカレントセルの行番号を取得し、Enterキーが押されたら行方向にカレントセルを移動させます。現在のカレントセルの行番号を取得するには、SelectedIndexプロパティを使用します。カレントセルを次の行に移動させるには、CurrentRowプロパティに現在のカレントセルの行番号に1を加えた値を設定します。このコードを実行すると、カレントセルの移動が行単位からセル単位に替わります。この呼び出しはデザイナーで必要です。呼び出しの後で初期化を追加します。フォーカスを現在のセルの真下のセルに移動します。フォーカスが最後の行にある場合は、[↓]キーを押してもフォーカスは移動しません。フォーカスを現在のセルの真上のセルに移動します。フォーカスが最初の行にある場合は、[↑]キーを押してもフォーカスは移動しません。フォーカスを行内の前のセルに移動します。フォーカスが行の最初のセルにある場合は、[←]キーを押してもフォーカスは移動しません。フォーカスを行内の次のセルに移動します。フォーカスが行の最後のセルにある場合は、[→]キーを押してもフォーカスは移動しません。フォーカスを現在の行内の最初のセルに移動します。フォーカスを現在の行内の最後のセルに移動します。コントロールを表示されている行数分下にスクロールします。フォーカスは、最後に表示されている行の同じ列に移動します。最後の行の一部が表示されていない場合は、最後の行が完全に表示されるまでグリッドがスクロールします。コントロールを表示されている行数分上にスクロールします。フォーカスは、最初に表示されている行の同じ列に移動します。最初の行の一部が表示されていない場合は、最初の行が完全に表示されるまでグリッドがスクロールします。現在のセルが編集モードにある場合は、フォーカスを現在の行の次の編集可能なセルに移動します。フォーカスがすでに行の最後のセルにある場合は、実行された変更をコミットし、フォーカスを次の行の最初の編集可能なセルに移動します。フォーカスがコントロールの最後のセルにある場合は、フォーカスを親コンテナのタブオーダーで次のコントロールに移動します。現在のセルが編集モードにない場合は、フォーカスを親コンテナのタブオーダーで次のコントロールに移動します。現在のセルが編集モードにある場合は、フォーカスを現在の行の前の編集可能なセルに移動します。フォーカスがすでに行の最初のセルにある場合は、実行された変更をコミットし、フォーカスを前の行の最後のセルに移動します。フォーカスがコントロールの最初のセルにある場合は、フォーカスを親コンテナのタブオーダーで前のコントロールに移動します。現在のセルが編集モードにない場合は、フォーカスを親コンテナのタブオーダーで前のコントロールに移動します。フォーカスを現在の列内の最後のセルに移動します。フォーカスを現在の列内の最初のセルに移動します。フォーカスを現在の行内の最後のセルに移動します。フォーカスを現在の行内の最初のセルに移動します。フォーカスをコントロール内の最初のセルに移動します。