マスク型セルの編集終了後に未入力箇所の文字を"0"に置き換えたい(例:"##.#"⇒"_1._"⇒"01.0")

文書番号 : 38935     文書種別 : 使用方法     登録日 : 2015/07/01     最終更新日 : 2015/07/01
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
マスク型セルが編集状態になったときに生成される入力エディタ(FpSpread1.GeneralEditor)のValidatingイベントにてMaskChar文字を"0"に置き換える方法が考えられます。詳細については以下のサンプルコードをご参考のうえ、用途に適した対応をご検討ください。

◎サンプルコード(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


◎サンプルコード(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"));
  }
キーワード
セル型