SPREAD for WPF 4.0J - GcSpreadGrid
セルのドラッグフィル
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > セル > セルのドラッグフィル

ユーザーに対して、選択範囲の右下に表示されるフィルハンドルをドラッグしてデータをコピー、または連続する値を設定するオートフィル操作を有効にできます。

セルのドラッグフィル

この操作を有効にするには、コントロールの CanUserDragFill プロパティをtrueに設定します。

ドラッグフィルはセルに値を設定します。読み取り専用のセルに対して実行することはできません。

文字列を含む数値に関しても連続データに対応します。例えば、「1人」「No. 1」「第1回」といった文字列の数値部分を連続して入力できます。また複数セルを選択した状態でのドラッグフィルにも対応します。「3」と「5」という値の2つのセルを選択した状態でオートフィル操作を行うと、「7」「9」といった奇数に限定した入力ができます。

ただし文字列の連続入力には対応していません。このとき、フィルメニューからは「連続データ」が表示されなくなります。

既定フィルの動作

DefaultDragFillType プロパティを使用してドラッグフィルの既定のフィル動作を指定することができます。フィルメニューが開いたときに最初に選択されている項目を指定できます。

次のサンプルコードは、既定のフィル動作を「連続データ」に設定します。

C#
コードのコピー
gcSpreadGrid1.CanUserDragFill = true;
gcSpreadGrid1.DefaultDragFillType = GrapeCity.Windows.SpreadGrid.Presenters.AutoFillTypes.FillSeries;
Visual Basic
コードのコピー
GcSpreadGrid1.CanUserDragFill = True
GcSpreadGrid1.DefaultDragFillType = GrapeCity.Windows.SpreadGrid.Presenters.AutoFillTypes.FillSeries

特定のフィルメニュー項目を非表示

XAMLコードでのStyle設定により、フィルメニューの項目から特定のメニュー項目を非表示にすることが可能です。次のサンプルコードは、「書式のみコピー(フィル)」と「書式なしコピー(フィル)」項目を非表示にします。

XAML
コードのコピー
<Window.Resources>
    <Style TargetType="sg:DragFillContextMenuItem">
        <Style.Triggers>
            <Trigger Property="Text" Value="書式のみコピー(フィル)">
                <Setter Property="Visibility" Value="Collapsed"/>
            </Trigger>
            <Trigger Property="Text" Value="書式なしコピー(フィル)">
                <Setter Property="Visibility" Value="Collapsed"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

フィルメニューを非表示

XAMLコードでのStyle設定により、オートフィル操作を行うときにフィルメニューを非表示にすることができます。このときのフィルメニューはDefaultDragFillType プロパティによる既定フィルの動作が適用されます。

XAML
コードのコピー
<Window.Resources>
    <Style TargetType="sg:DragFillSmartTag">
        <Setter Property="Visibility" Value="Collapsed"/>
    </Style>
</Window.Resources>

イベント

セルのドラッグフィルを実行すると、以下のイベントが発生します。

イベント 説明
DragEnding ドラッグ操作が終了する直前に発生します。
DragEnded ドラッグ操作が終了したあとに発生します。

このとき、イベントパラメーターDragEventArgs クラスのDragType プロパティには、ドラッグフィルの実行内容を示すDragType 列挙体のメンバが設定されます。

次のサンプルコードは、連続データが設定される場合にコンソールにメッセージを表示します。

C#
コードのコピー
void gcSpreadGrid1_DragEnded(object sender, GrapeCity.Windows.SpreadGrid.DragEventArgs e)
{
    if (e.DragType == DragType.FillSeries)
    {
        Console.WriteLine("連続データが設定されました");
    }
}
Visual Basic
コードのコピー
Private Sub GcSpreadGrid1_DragEnded(sender As Object, e As DragEventArgs) Handles GcSpreadGrid1.DragEnded
    If e.DragType = DragType.FillSeries Then
        Console.WriteLine("連続データが設定されました")
    End If
End Sub
関連トピック