SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

グリッドデータをドラッグ&ドロップで操作し新しい表を作成する.NETアプリケーションを作る

「PowerTools ComponentOne Studio 2012J」のC1TrueDBGridコントロールを使った.NETアプリケーションの作成

  • このエントリーをはてなブックマークに追加

C1TrueDBGridコントロール「C1TrueDBGrid2」の設定

 続いて、データのドロップを受け取るC1TrueDBGridコントロール「C1TrueDBGrid2」の設定を行います。こちらは、データベース「都立図書館リスト_Data.mdf」のテーブル「編集用テーブル」を連結します。

 (1)スマートタグから「データベースの選択」をクリックし、「プロジェクトデータソースの追加」をクリックします。データソース構成ウィザードが起動しますので、順番に「データベース」「データセット」を選びます。

 (2)「データ接続の選択」ページに移りますので、接続文字列はそのままで「次へ」ボタンをクリックします。

 (3)テーブル「編集用テーブル」をクリックし、「データセット名」を「都立図書館リスト_編集用テーブル_DataDataSet」に変更し「完了」ボタンをクリックします。

テーブル「編集用テーブル」をクリックし、
「データセット名」を「都立図書館リスト_編集用テーブル_DataDataSet」に変更
テーブル「編集用テーブル」をクリックし、「データセット名」を「都立図書館リスト_編集用テーブル_DataDataSet」に変更

 (4)もう一度スマートタグを開き、「VisualStyle」を「Office2007Black」にし、「行の色を互い違いにする」と「削除を有効にする」をクリックします。

 そして、プロパティウィンドウで次のプロパティを設定します。

プロパティ 設定値
AllowDrop True
BlackColor 192, 255, 192
BorderStyle Fixed3D
FlatStyle Standard
EvenRowStyle - BackColor Bisque
「VisualStyle」を「Office2007Black」にし、「行の色を互い違いにする」をクリック
「VisualStyle」を「Office2007Black」にし、「行の色を互い違いにする」をクリック

 AllowDropプロパティをTrueにすると、C1TrueDBGridコントロールはドロップ機能が有効になり、データを受け取ることができるようになります。

 (5)DragEnter・DragDropイベントハンドラを作成します。

実行コードの作成

 フォームが作成できたら、ドラッグ&ドロップの機能を実装します。

 コードは、ドラッグ側のC1TrueDBGridコントロールではMouseDown・MouseMoveイベントハンドラに、ドロップ側のC1TrueDBGridコントロールではDragEnter・DragDropイベントハンドラに、それぞれの処理を組み込みます。

グリッドの列幅調整の処理

 最初に、フォームのLoadイベントハンドラで2つのグリッドの列幅調節を行います。ドラッグ側のグリッドは列幅をセルのコンテンツに合わせ、ドロップ側のグリッドの列幅は、ドラッグ側の列幅に合わせます。

そして、前回ドラッグアンドドロップしたデータが残っている場合に備え、ドロップ側のグリッドデータを消去します。

Visual Basic
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
C#
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();
}

次のページ
ドラッグ側の処理

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6923 2012/12/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング