MESCIUS SPREAD for Windows Forms 15.0J > 開発者ガイド > 編集、検証、選択、フォーカス > コピー&ペースト > クリップボード機能 |
シートでは、いくつかのクリップボード操作(コピー、切り取り、貼り付けなど)のデフォルトの動作が自動的に設定されます。これはコントロールに組み込まれた機能で、たとえば、ユーザーがシートのセルに対してコピーや貼り付けを実行する場合、クリップボードの内容をどのように操作するかなど、アプリケーションで動作を設定することもできます。ここではクリップボード機能の設定方法について説明します。
|
FpSpreadクラスのAutoClipboardプロパティを使用すると、エンドユーザーがクリップボード操作を実行するためにショートカットキーを使用できるかどうかを切り替えることもできます。コントロールでのクリップボード操作をすべて無効にするには、FpSpreadクラスのAutoClipboardプロパティをFalseに設定します(デフォルト値はTrue)。貼り付け([Ctrl]+[V])など、いくつかのクリップボード操作を無効にすることもできます。これには、ショートカットキーおよびクリップボード操作に対する入力マップ定義([Ctrl]+[C]、[Ctrl]+[V]、[Ctrl]+[X])を無効にします。
クリップボード操作において、ヘッダを処理に含めるかどうかを設定できます。 これには、FpSpreadクラスのClipboardOptionsプロパティ、およびClipboardOptions列挙体を使用します。 FpSpreadクラスのClipboardOptionsプロパティを設定すると、クリップボード操作の実行時に行ヘッダまたは列ヘッダを処理に含めるかどうかを指定できます。 デフォルト値はAllHeadersであり、全ヘッダが処理に含められます。
シート上でコピーされた値は、.NET Frameworkの提供するClipboardクラスによって管理されます。 このClipboardクラスの各処理を使用することで、クリップボードの内容を取得できます。
Loadイベントの発生時にSheetViewクラスのClipboardCopyメソッドを呼び出すと、セルデータをクリップボードにあらかじめコピーできます。 この後GetDataObjectメソッドを呼び出すと、これらのクリップボードの内容を取得できるので、テキストの書式を判断する場合などに便利です。
シート上で貼り付けが実行されると([Ctrl]+[V])、FpSpreadクラスのClipboardPastingイベントが発生します。 特定の状況では、このイベントをキャンセルすることで貼り付けを無効にできます。 貼り付けを無効にするには、貼り付けの実行されたタイミングを取得して、アクションをキャンセルします。
セルがクリップボードにコピーまたは切り取られると、デフォルトでは、値、書式、数式を含むすべてのデータ属性が貼り付け対象となります。 入力マップの定義を変更すると、たとえば値だけを貼り付け対象とすることができます。 デフォルト設定はSpreadActionsクラスのClipboardPasteAllフィールドであり、データの全属性が貼り付け対象となります。ClipboardPasteOptions列挙体を使用すると、ユーザーがクリップボードの内容を貼り付ける場合に、貼り付けられるデータの種類を設定できます。
Features クラスのPasteSkipInvisibleRange プロパティを使用して、非表示のセル、行、および列にクリップボードの値を貼り付けるかどうかを設定できます。このプロパティは、ブール値を受け入れ、デフォルトではFalse に設定されます。
このオプションは、RichClipboard がTrueに設定されている場合にのみ有効になります。
When PasteSkipInvisibleRange = True | When PasteSkipInvisibleRange = False (default value) |
---|---|
次のサンプルコードは、非表示範囲にデータを貼り付けない方法を示します。
C# |
コードのコピー
|
---|---|
fpSpread1.LegacyBehaviors = LegacyBehaviors.None; fpSpread1.Features.RichClipboard = true; fpSpread1.ActiveSheet.Rows[7].Visible = false; fpSpread1.ActiveSheet.Rows[10, 11].Visible = false; fpSpread1.AsWorkbook().Features.PasteSkipInvisibleRange = true; |
Visual Basic |
コードのコピー
|
---|---|
fpSpread1.LegacyBehaviors = LegacyBehaviors.None fpSpread1.Features.RichClipboard = true fpSpread1.ActiveSheet.Rows(7).Visible = false fpSpread1.ActiveSheet.Rows(10, 11).Visible = false fpSpread1.AsWorkbook().Features.PasteSkipInvisibleRange = true |
SheetViewクラスには、クリップボード処理用にさまざまなメソッドが用意されています。 必要に応じて、以下のメソッドを実行できます。