マスク型セルの編集終了後に未入力箇所の文字を"0"に置き換えたい(例:"##.#"⇒"_1._"⇒"01.0")
対象製品
SPREAD for Windows Forms 8.0J
詳細
マスク型セルが編集状態になったときに生成される入力エディタ(FpSpread1.GeneralEditor)のValidatingイベントにてMaskChar文字を"0"に置き換える方法が考えられます。詳細については以下のサンプルコードをご参考のうえ、用途に適した対応をご検討ください。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(VB)
Imports FarPoint.Win.Spread.CellType
Private WithEvents gEditor As GeneralEditor
Private maskChar As Char
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'マスク型セル定義
Dim mt As New MaskCellType
mt.Mask = "##.#"
mt.MaskChar = "_"
maskChar = mt.MaskChar
FpSpread1.ActiveSheet.Cells(0, 0).CellType = mt
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
gEditor = Nothing
Dim iRow As Integer = FpSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = FpSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is MaskCellType Then
'入力コントロールのマッピング
gEditor = DirectCast(FpSpread1.EditingControl, GeneralEditor)
End If
End Sub
Private Sub gEditor_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles gEditor.Validating
'エディタ上のプレースホルダ文字を変換します
gEditor.Text = gEditor.Text.Replace(maskChar, "0")
End Sub
Private WithEvents gEditor As GeneralEditor
Private maskChar As Char
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'マスク型セル定義
Dim mt As New MaskCellType
mt.Mask = "##.#"
mt.MaskChar = "_"
maskChar = mt.MaskChar
FpSpread1.ActiveSheet.Cells(0, 0).CellType = mt
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
gEditor = Nothing
Dim iRow As Integer = FpSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = FpSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is MaskCellType Then
'入力コントロールのマッピング
gEditor = DirectCast(FpSpread1.EditingControl, GeneralEditor)
End If
End Sub
Private Sub gEditor_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles gEditor.Validating
'エディタ上のプレースホルダ文字を変換します
gEditor.Text = gEditor.Text.Replace(maskChar, "0")
End Sub
◎サンプルコード(C#)
using FarPoint.Win.Spread.CellType;
private GeneralEditor gEditor;
private char maskChar;
private void Form1_Load(object sender, System.EventArgs e)
{
//マスク型セル定義
MaskCellType mt = new MaskCellType();
mt.Mask = "##.#";
mt.MaskChar = Convert.ToChar("_");
maskChar = mt.MaskChar;
fpSpread1.ActiveSheet.Cells[0, 0].CellType = mt;
}
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
gEditor = null;
int iRow = fpSpread1.ActiveSheet.ActiveRowIndex;
int iCol = fpSpread1.ActiveSheet.ActiveColumnIndex;
if (fpSpread1.ActiveSheet.GetCellType(iRow, iCol) is MaskCellType)
{
//入力コントロールのマッピング
gEditor = (GeneralEditor)fpSpread1.EditingControl;
gEditor.Validating += new System.ComponentModel.CancelEventHandler(this.gEditor_Validating);
}
}
private void gEditor_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
//エディタ上のプレースホルダ文字を変換します
gEditor.Text = gEditor.Text.Replace(maskChar, Convert.ToChar("0"));
}
private GeneralEditor gEditor;
private char maskChar;
private void Form1_Load(object sender, System.EventArgs e)
{
//マスク型セル定義
MaskCellType mt = new MaskCellType();
mt.Mask = "##.#";
mt.MaskChar = Convert.ToChar("_");
maskChar = mt.MaskChar;
fpSpread1.ActiveSheet.Cells[0, 0].CellType = mt;
}
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
gEditor = null;
int iRow = fpSpread1.ActiveSheet.ActiveRowIndex;
int iCol = fpSpread1.ActiveSheet.ActiveColumnIndex;
if (fpSpread1.ActiveSheet.GetCellType(iRow, iCol) is MaskCellType)
{
//入力コントロールのマッピング
gEditor = (GeneralEditor)fpSpread1.EditingControl;
gEditor.Validating += new System.ComponentModel.CancelEventHandler(this.gEditor_Validating);
}
}
private void gEditor_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
//エディタ上のプレースホルダ文字を変換します
gEditor.Text = gEditor.Text.Replace(maskChar, Convert.ToChar("0"));
}
キーワード
セル型