GrapeCity SPREAD for WPF 2.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 |