PowerTools MultiRow for Windows Forms 8.0J
ユーザー定義セル


ユーザー定義セルは、基本セルや組み込みのセル型を元に作成する任意のセル型です。ここでは、ユーザー定義セルの作成方法について説明します。
ユーザー定義セルの種類
ユーザー定義セルは、既存のセル型のクラスの派生クラスとして作成します。このため、作成する機能に応じて任意のセル型をベースとして選択できます。たとえば、次のようなシナリオがあります。

  • 基本セル(Cell)を継承して表示や編集にかかわるすべての処理を実装する。
  • ヘッダ型セル(HeaderCell)を継承してヘッダの表示をカスタマイズする。
  • 列ヘッダ型セル(ColumnHeaderCell)を継承して列ヘッダの表示をカスタマイズする。
  • ヘッダ型セル(HeaderCell)を継承して、ColumnHeaderCellとは別の任意の列ヘッダを作成する。
  • 文字列型セル(TextBoxCell)を継承して、頻繁に使用するスタイルをセル型自体に組み込む。
  • 文字列型セル(TextBoxCell)を継承して、セルの編集時に任意のコントロールを表示する(セル編集コントロール)。
  • 既存のセル編集コントロールを継承して任意の処理を追加し、これを別のセル型に実装する。

  • Cellや組み込みのセル型から派生したクラスに新しいプロパティを追加するときは、Cloneメソッドをオーバーライドし、オブジェクトの複製時に新しいプロパティの値をコピーする必要があります。詳細は後述の「カスタム プロパティの追加」を参照してください。
ユーザー定義セルの作成
ユーザー定義セルはプロジェクトの形態(アプリケーション、クラスライブラリ)に関係なくコーディングで利用できます。旧バージョン5.0Jでは、ユーザー定義セルをあらかじめ別のアセンブリとしてビルドしなければツールボックスに登録できませんでしたが、8.0Jでは6.0J/7.0Jと同様にWindowsフォームでUserControlを利用する場合と同じように、デバッグ中のプロジェクトでセルの定義からツールボックスへの登録までが可能です。
ここでは、ユーザー定義セルを作成し、テンプレート デザイナに配置するまでの方法を説明します。

  1. Visual Studioを起動し、Windows フォーム アプリケーション プロジェクトを新規に作成する。(例:WindowsApplication1)
  2. Visual Studioのメニューから[プロジェクト]−[新しい項目の追加]を選択する。
  3. リストから「MultiRow 8.0 テンプレート」を選択し、[追加]ボタンをクリックする。(例:Template1.vb、Template1.cs)
  4. 再び Visual Studioのメニューから[プロジェクト]−[新しい項目の追加]を選択する。
  5. リストから「クラス」を選択し、プロジェクトにクラス ファイルを追加する。(例:MyTextBoxCell.vb、MyTextBoxCell.cs)
  6. クラス ファイルを開き、次のコードを追加する。
    Imports System.Drawing
    Imports System.Windows.Forms
    Imports GrapeCity.Win.MultiRow
    
    Public Class MyTextBoxCell
        Inherits TextBoxCell
        
        Public Sub New()
            Me.Style.BackColor = Color.Azure
        End Sub
    End Class
    using System.Drawing;
    using System.Windows.Forms;
    using GrapeCity.Win.MultiRow;
    
    public class MyTextBoxCell : TextBoxCell
    {
        public MyTextBoxCell()
        {
            base.Style.BackColor = Color.Azure;
        }
    }

  7. プロジェクトをビルドする。
  8. 追加したテンプレートを開き、テンプレート デザイナを表示する。
  9. Visual Studioのメニューから[表示]−[ツールボックス]を選択する。
  10. ツールボックスのアイテムの先頭に、ユーザー定義型セルが追加されていることを確認する。

以上でユーザー定義型セルの作成は完了です。ツールボックスからテンプレートにドラッグ&ドロップして配置し、組み込みのセル型と同じように利用できます。
カスタム プロパティの追加
実行時にGcMultiRowコントロールに追加されるセルは、GcMultiRow.Template.Row.Cellsプロパティのセルのインスタンスのクローンとなります。このため、ユーザー定義型セルを作成してカスタムプロパティを実装している場合、Cloneメソッドでプロパティの値を複製する必要があります。

たとえば、次のようなカスタムプロパティを実装している場合、

Public Class MyTextBoxCell
    Inherits TextBoxCell

    Private _editingBackColor As Color

    Property EditingBackColor() As Color
        Get
            Return _editingBackColor
        End Get
        Set(ByVal value As Color)
            _editingBackColor = value
        End Set
    End Property

End Class
public class MyTextBoxCell : TextBoxCell
{
    private Color _editingBackColor;

    public Color EditingBackColor
    {
        get { return _editingBackColor; }
        set { _editingBackColor = value; }
    }
}


Clone メソッドのコーディングは次のようになります。

Public Class MyTextBoxCell
    Inherits TextBoxCell

    Public Overrides Function Clone() As Object
        Dim myTextBoxCell As MyTextBoxCell = DirectCast(MyBase.Clone, MyTextBoxCell)
        myTextBoxCell._editingBackColor = Me.EditingBackColor
        Return myTextBoxCell
    End Function

End Class
public class MyTextBoxCell : TextBoxCell
{
    public override object Clone()
    {
        MyTextBoxCell myTextBoxCell = base.Clone() as MyTextBoxCell;
        myTextBoxCell._editingBackColor = this.EditingBackColor;
        return myTextBoxCell;
    }
}

バージョン5.0J/6.0J/7.0Jで作成したユーザー定義型セル
旧バージョン5.0J/6.0J/7.0Jで作成したユーザー定義型セルを8.0Jで使用するには、旧バージョンの代わりに8.0Jを参照する環境でビルドし直す必要があります。旧バージョンおよび8.0Jから共通のアセンブリを参照することはできません。
使用例
   
参照

 

 


© 2008-2015 GrapeCity inc. All rights reserved.