C1TrueDBGridコントロール「C1TrueDBGrid2」の設定
続いて、データのドロップを受け取るC1TrueDBGridコントロール「C1TrueDBGrid2」の設定を行います。こちらは、データベース「都立図書館リスト_Data.mdf」のテーブル「編集用テーブル」を連結します。
(1)スマートタグから「データベースの選択」をクリックし、「プロジェクトデータソースの追加」をクリックします。データソース構成ウィザードが起動しますので、順番に「データベース」「データセット」を選びます。
(2)「データ接続の選択」ページに移りますので、接続文字列はそのままで「次へ」ボタンをクリックします。
(3)テーブル「編集用テーブル」をクリックし、「データセット名」を「都立図書館リスト_編集用テーブル_DataDataSet」に変更し「完了」ボタンをクリックします。
(4)もう一度スマートタグを開き、「VisualStyle」を「Office2007Black」にし、「行の色を互い違いにする」と「削除を有効にする」をクリックします。
そして、プロパティウィンドウで次のプロパティを設定します。
プロパティ | 設定値 |
AllowDrop | True |
BlackColor | 192, 255, 192 |
BorderStyle | Fixed3D |
FlatStyle | Standard |
EvenRowStyle - BackColor | Bisque |
AllowDropプロパティをTrueにすると、C1TrueDBGridコントロールはドロップ機能が有効になり、データを受け取ることができるようになります。
(5)DragEnter・DragDropイベントハンドラを作成します。
実行コードの作成
フォームが作成できたら、ドラッグ&ドロップの機能を実装します。
コードは、ドラッグ側のC1TrueDBGridコントロールではMouseDown・MouseMoveイベントハンドラに、ドロップ側のC1TrueDBGridコントロールではDragEnter・DragDropイベントハンドラに、それぞれの処理を組み込みます。
グリッドの列幅調整の処理
最初に、フォームのLoadイベントハンドラで2つのグリッドの列幅調節を行います。ドラッグ側のグリッドは列幅をセルのコンテンツに合わせ、ドロップ側のグリッドの列幅は、ドラッグ側の列幅に合わせます。
そして、前回ドラッグアンドドロップしたデータが残っている場合に備え、ドロップ側のグリッドデータを消去します。
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'TODO: このコード行はデータを '都立図書館リスト_編集用テーブル_DataDataSet.編集用テーブル' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 'C1TrueDBGrid2用データベース Me.編集用テーブルTableAdapter.Fill(Me.都立図書館リスト_編集用テーブル_DataDataSet.編集用テーブル) 'TODO: このコード行はデータを '都立図書館リスト_DataDataSet.図書館一覧' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 'C1TrueDBGrid1用データベース Me.図書館一覧TableAdapter.Fill(Me.都立図書館リスト_DataDataSet.図書館一覧) 'C1TrueDBGrid1の列幅を自動調節 Dim i As Integer For i = 0 To 4 C1TrueDBGrid1.Splits(0, 0).DisplayColumns(i).AllowSizing = True C1TrueDBGrid1.Splits(0, 0).DisplayColumns(i).AutoSize() Next 'C1TrueDBGrid2の列幅をC1TrueDBGrid1の列幅に合わせる For i = 0 To 4 C1TrueDBGrid2.Splits(0, 0).DisplayColumns(i).AllowSizing = True C1TrueDBGrid2.Splits(0, 0).DisplayColumns(i).Width = C1TrueDBGrid1.Splits(0, 0).DisplayColumns(i).Width Next 'グリッドデータが残っている場合は削除する Me.都立図書館リスト_編集用テーブル_DataDataSet.編集用テーブル.Clear() End Sub
private void Form1_Load(object sender, EventArgs e) { // TODO: このコード行はデータを '都立図書館リスト_編集用テーブル_DataDataSet.編集用テーブル' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 this.編集用テーブルTableAdapter.Fill(this.都立図書館リスト_編集用テーブル_DataDataSet.編集用テーブル); // TODO: このコード行はデータを '都立図書館リスト_DataDataSet.図書館一覧' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 this.図書館一覧TableAdapter.Fill(this.都立図書館リスト_DataDataSet.図書館一覧); //C1TrueDBGrid1の列幅を自動調節 int i ; for(i=0;i<=4;i++) { c1TrueDBGrid1.Splits[0, 0].DisplayColumns[i].AllowSizing = true; c1TrueDBGrid1.Splits[0, 0].DisplayColumns[i].AutoSize(); } //C1TrueDBGrid2の列幅をC1TrueDBGrid1の列幅に合わせる for(i=0;i<=4;i++) { c1TrueDBGrid2.Splits[0, 0].DisplayColumns[i].AllowSizing = true; c1TrueDBGrid2.Splits[0, 0].DisplayColumns[i].Width = c1TrueDBGrid1.Splits[0, 0].DisplayColumns[i].Width; } // グリッドデータが残っている場合は削除する this.都立図書館リスト_編集用テーブル_DataDataSet.Clear(); }