Imports Infragistics.Win.UltraWinGrid Imports Infragistics.Win.UltraWinToolbars
始める前に
WinGrid コントロールの ClickCell イベントは、どのセルをエンド ユーザーがクリックしたかを監視するために役立ちます。ClickCell イベント引数を使用すると、セル値、それが属する行、クリックされるセルのヘッダーだけでなくその兄弟セルと値にアクセスできます。
達成すること
この詳細なガイドは、クリックされるセルへにアクセスの取得、クリックされた行の選択、ヘッダー キャプションおよびクリックされたセルに対応するセル値の表示、そしてコンテキスト メニューのポップアップの方法の手順を説明します。この詳細なガイドは、このイベントおよびイベント引数から WinGrid と応答する方法を学ぶことを手助けする良い練習です。
以下の手順を実行します。
Visual Studio® ツールボックスから UltraGrid をフォームにドラッグ アンド ドロップします。UltraGrid を Northwind データベースのカテゴリ テーブルにバインドします。WinGrid のデータ バインドについての詳細は、 「WinGrid をフラット データ ソースにバインド」を参照してください。
コードの記述を開始する前にコード ビハインドに using/Imports のディレクティブを配置します。そうすれば、メンバーは完全に記述された名前をタイプする必要がなくなります。
Visual Basic の場合:
Imports Infragistics.Win.UltraWinGrid Imports Infragistics.Win.UltraWinToolbars
C# の場合:
using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinToolbars;
フォームのコード ビハインドで、セルがクリックされる時のマウス ボタン情報を保存するためのプライベート変数を追加します。
Visual Basic の場合:
Private _theButton As MouseButtons = MouseButtons.None
C# の場合:
private MouseButtons _theButton = MouseButtons.None;
Visual Studio® ツールボックスから UltraToolbarsManager™ をフォームに追加します。
以下のコードを Form_Load イベント ハンドラに追加します。
Visual Basic の場合:
'以下のコード行はポップアップ メニューを作成および設定します。 Dim b As ButtonTool = New Infragistics.Win.UltraWinToolbars.ButtonTool ("Delete") b.SharedProps.Caption = "Delete" Dim p As PopupMenuTool = New Infragistics.Win.UltraWinToolbars.PopupMenuTool ("Operations") Me.ultraToolbarsManager1.Tools.AddRange (New ToolBase () {p, b}) p.Tools.AddTool ("Delete") AddHandler Me.ultraToolbarsManager1.ToolClick, AddressOf_ ultraToolbarsManager1_ToolClick Me.Text = "WinGrid CellClick Example" ' TODO: このコードの行は 'nwindDataSet.Categories' テーブルにデータをロードします。必要に応じて、移動や削除ができます。 Me.categoriesTableAdapter.Fill (Me.nwindDataSet.Categories)
C# の場合:
// 以下のコード行はポップアップ メニューを作成および設定します。 ButtonTool b = new Infragistics.Win.UltraWinToolbars.ButtonTool("Delete"); b.SharedProps.Caption = "Delete"; PopupMenuTool p = new Infragistics.Win.UltraWinToolbars.PopupMenuTool("Operations"); this.ultraToolbarsManager1.Tools.AddRange(new ToolBase[] { p, b }); p.Tools.AddTool("Delete"); this.ultraToolbarsManager1.ToolClick+=new ToolClickEventHandler(ultraToolbarsManager1_ToolClick); // ヘッダー テキストをフォームに指定します this.Text = "WinGrid CellClick Example"; // TODO: このコードの行は 'nwindDataSet.Categories' テーブルにデータをロードします。必要に応じて、移動や削除ができます。 this.categoriesTableAdapter.Fill(this.nwindDataSet.Categories);
UltraGrid の MouseDown イベント ハンドラで、このコード行を追加します。
Visual Basic の場合:
_theButton = e.Button
C# の場合:
_theButton = e.Button
UltraToolbarsManager の ToolClick イベント ハンドラを追加し、アクティブ WinGrid 行を削除するために以下のコードを記述します。
Visual Basic の場合:
Select Case e.Tool.Key Case "Delete" If Me.categoriesUltraGrid.ActiveRow IsNot Nothing Then Me.categoriesUltraGrid.ActiveRow.Delete() End If Exit Select End Select
C# の場合:
switch (e.Tool.Key) { case "Delete": if (this.categoriesUltraGrid.ActiveRow != null) { this.categoriesUltraGrid.ActiveRow.Delete(); } break; }
WinGrid コントロールの ClickCell イベント ハンドラを追加し、以下のコード行を配置します。
Visual Basic の場合:
'クリックした行をアクティブ化して選択します DirectCast (sender, UltraGrid).Selected.Rows.Clear () e.Cell.Row.Activate () e.Cell.Row.Selected = True 'ヘッダー キャプションおよびセル値を表示するためにフォーム テキストを設定します。 Me.Text = String.Format ("{0}: {1}", e.Cell.Column.Header.Caption, e.Cell.Value.ToString ()) '右クリックするとコンテキスト メニューを表示します If _theButton = MouseButtons.Right Then Me.ultraToolbarsManager1.ShowPopup ("Operations") End If
C# の場合:
//クリックした行をアクティブ化して選択します ((UltraGrid)sender).Selected.Rows.Clear(); e.Cell.Row.Activate(); e.Cell.Row.Selected = true; //ヘッダー キャプションおよびセル値を表示するためにフォーム テキストを設定します。 this.Text = string.Format("{0}: {1}", e.Cell.Column.Header.Caption, e.Cell.Value.ToString()); //右クリックするとコンテキスト メニューを表示します if (_theButton == MouseButtons.Right) { this.ultraToolbarsManager1.ShowPopup("Operations"); }
アプリケーションを実行して各セルを右クリックします。右クリックした時の Form.Text の変化および Delete コンテキスト メニュー ポップアップを観察します。