セル入力時に[Alt]+[Enter]キーで改行したい
対象製品
SPREAD for Windows Forms 8.0J
詳細
セル入力時の[Alt]+[Enter]キーで改行するには、編集用コントロールのKeyDownイベントをハンドリングし、該当キー押下時に明示的に改行コードを挿入します。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(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
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;
}
}
{
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;
}
}