コンテキストメニューから[切り取り][コピー][貼り付け]を行いたい

文書番号 : 38957     文書種別 : 使用方法     登録日 : 2015/07/02     最終更新日 : 2015/07/02
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
コンテキストメニューを使用してクリップボード操作を行うには、標準のContextMenuStripクラスを使用することで実現できます。なお、製品では右クリック時にアクティブセルの移動は行いません。アクティブセルの移動後にコンテキストメニューの表示を行う場合には、CellClickイベント内でアクティブセルの移動処理を実装する必要があります。

◎サンプルコード(VB)
Private cMenu As ContextMenuStrip
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' コンテキストメニューの作成
  cMenu = New ContextMenuStrip()
  cMenu.Items.Add("切り取り", Nothing, New System.EventHandler(AddressOf MethodCut))
  cMenu.Items.Add("コピー", Nothing, New System.EventHandler(AddressOf MethodCopy))
  cMenu.Items.Add("貼り付け", Nothing, New System.EventHandler(AddressOf MethodPaste))

  ' テストデータの設定
  For i As Integer = 0 To 10 - 1
    For j As Integer = 0 To 10 - 1
      FpSpread1.ActiveSheet.SetValue(i, j, String.Format("R{0}C{1}", i, j))
    Next
  Next
End Sub

Private Sub FpSpread1_CellClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.CellClickEventArgs) Handles FpSpread1.CellClick
  ' マウスの右ボタンでクリックされた場合
  If e.Button = Windows.Forms.MouseButtons.Right Then
    ' アクティブセルの設定
    FpSpread1.ActiveSheet.SetActiveCell(e.Row, e.Column)
    ' コンテキストメニューの表示
    cMenu.Show(FpSpread1, e.X, e.Y)
  End If
End Sub

Private Sub MethodCut(ByVal sender As Object, ByVal e As System.EventArgs)
  ' ClipboardCutメソッドの呼び出し
  FpSpread1.ActiveSheet.ClipboardCut()
End Sub

Private Sub MethodCopy(ByVal sender As Object, ByVal e As System.EventArgs)
  ' ClipboardCopyメソッドの呼び出し
  FpSpread1.ActiveSheet.ClipboardCopy()
End Sub

Private Sub MethodPaste(ByVal sender As Object, ByVal e As System.EventArgs)
  ' ClipboardPasteメソッドの呼び出し
  FpSpread1.ActiveSheet.ClipboardPaste()
End Sub


◎サンプルコード(C#)
private ContextMenuStrip cMenu;
private void Form1_Load(object sender, EventArgs e)
{
  // コンテキストメニューの作成
  cMenu = new ContextMenuStrip();
  cMenu.Items.Add("切り取り", null, new System.EventHandler(MethodCut));
  cMenu.Items.Add("コピー", null, new System.EventHandler(MethodCopy));
  cMenu.Items.Add("貼り付け", null, new System.EventHandler(MethodPaste));

  // テストデータの設定
  for (int i=0;i<10;i++)
  {
    for (int j=0;j<10;j++)
    {
      fpSpread1.ActiveSheet.SetValue(i, j, String.Format("R{0}C{1}", i, j));
    }
  }
}

private void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
{
  // マウスの右ボタンでクリックされた場合
  if (e.Button == MouseButtons.Right)
  {
    // アクティブセルの設定
    fpSpread1.ActiveSheet.SetActiveCell(e.Row, e.Column);
    // コンテキストメニューの表示
    cMenu.Show(fpSpread1, e.X, e.Y);
  }
}

private void MethodCut(object sender, System.EventArgs e)
{
  // ClipboardCutメソッドの呼び出し
  fpSpread1.ActiveSheet.ClipboardCut();
}

private void MethodCopy(object sender, System.EventArgs e)
{
  // ClipboardCopyメソッドの呼び出し
  fpSpread1.ActiveSheet.ClipboardCopy();
}

private void MethodPaste(object sender, System.EventArgs e)
{
  // ClipboardPasteメソッドの呼び出し
  fpSpread1.ActiveSheet.ClipboardPaste();
}
関連情報