セル入力時に[Alt]+[Enter]キーで改行したい

文書番号 : 38964     文書種別 : 使用方法     登録日 : 2015/07/02     最終更新日 : 2015/07/02
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
セル入力時の[Alt]+[Enter]キーで改行するには、編集用コントロールのKeyDownイベントをハンドリングし、該当キー押下時に明示的に改行コードを挿入します。

◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim textCell As New FarPoint.Win.Spread.CellType.TextCellType
  textCell.Multiline = True
  FpSpread1.ActiveSheet.Cells(0, 0).CellType = textCell
  FpSpread1.ActiveSheet.Rows(0).Height = 50
End Sub

Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
  ' 編集用コントロールのKeyDownイベントを設定します。
  AddHandler FpSpread1.EditingControl.KeyDown, AddressOf EditingControl_KeyDown
End Sub

Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
  ' 編集用コントロールのKeyDownイベントを解除します。
  RemoveHandler FpSpread1.EditingControl.KeyDown, AddressOf EditingControl_KeyDown
End Sub

Private Sub EditingControl_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
  ' Alt+Enterキー操作を実装します。
  If e.Alt AndAlso e.KeyCode = Keys.Enter Then
    ' 本来のキー操作をキャンセルします。
    e.Handled = True
    ' 改行してキャレットを文字列の最後に配置します。
    Dim gEditor As FarPoint.Win.Spread.CellType.GeneralEditor = CType(FpSpread1.EditingControl, FarPoint.Win.Spread.CellType.GeneralEditor)
    gEditor.Text += vbCrLf
    gEditor.SelectionStart = gEditor.Text.Length
  End If
End Sub


◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
  FarPoint.Win.Spread.CellType.TextCellType textCell = new FarPoint.Win.Spread.CellType.TextCellType();
  textCell.Multiline = true;
  fpSpread1.ActiveSheet.Cells[0, 0].CellType = textCell;
  fpSpread1.ActiveSheet.Rows[0].Height = 50;
  fpSpread1.EditModeOn += new EventHandler(fpSpread1_EditModeOn);
  fpSpread1.EditModeOff += new EventHandler(fpSpread1_EditModeOff);
}

private void fpSpread1_EditModeOn(object sender, EventArgs e)
{
  // 編集用コントロールのKeyDownイベントを追加します。
  fpSpread1.EditingControl.KeyDown += new KeyEventHandler(EditingControl_KeyDown);
}

private void fpSpread1_EditModeOff(object sender, EventArgs e)
{
  // 編集用コントロールのKeyDownイベントを削除します。
  fpSpread1.EditingControl.KeyDown -= new KeyEventHandler(EditingControl_KeyDown);
}

private void EditingControl_KeyDown(object sender, KeyEventArgs e)
{
  // Alt+Enterキー操作を実装します。
  if (e.KeyData == (Keys.Enter | Keys.Alt))
  {
    // 本来のキー操作をキャンセルします。
    e.Handled = true;
    // 改行してキャレットを文字列の最後に配置します。
    FarPoint.Win.Spread.CellType.GeneralEditor editor = sender as FarPoint.Win.Spread.CellType.GeneralEditor;
    editor.Text += System.Environment.NewLine;
    editor.SelectionStart = editor.Text.Length;
  }
}
関連情報