サロゲート文字の入力を禁止するには?

文書番号 : 40488     文書種別 : 使用方法     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
TextBoxCellの編集には標準のTextBox(System.Windows.Form.TextBox)を提供しているため、サロゲート文字(サロゲートペア)の入力を直接禁止することはできません。次のように入力された文字に対して、検証を行うことで値の確定を禁止できます。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Dim textBoxCell1 As New TextBoxCell()
Dim surrogateCharValidator1 As New SurrogateCharValidator()
surrogateCharValidator1.Actions.Add(New LineNotify())
textBoxCell1.Validators.Add(surrogateCharValidator1)

gcMultiRow1.Template = Template.CreateGridTemplate(New Cell() { textBoxCell1 })

[C#]
using GrapeCity.Win.MultiRow;

TextBoxCell textBoxCell1 = new TextBoxCell();
SurrogateCharValidator surrogateCharValidator1 = new SurrogateCharValidator();
surrogateCharValidator1.Actions.Add(new LineNotify());
textBoxCell1.Validators.Add(surrogateCharValidator1);

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { textBoxCell1 });

InputManCell の GcTextBoxCell を使用すると、サロゲート文字の入力を直接禁止できます。この場合、GcTextBoxCell.Format プロパティに "^T" を指定します。

[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan

Dim gcTextBoxCell1 As New InputManCell.GcTextBoxCell
gcTextBoxCell1.Name = "gcTextBoxCell1"
gcTextBoxCell1.Format = "^T"; ' サロゲート文字以外の入力を許可

GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() { gcTextBoxCell1 })

[C#]
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;

InputManCell.GcTextBoxCell gcTextBoxCell1 = new InputManCell.GcTextBoxCell();
gcTextBoxCell1.Name = "gcTextBoxCell1";
gcTextBoxCell1.Format = "^T"; // サロゲート文字以外の入力を許可

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcTextBoxCell1 });

参考:
InputManCellのGcTextBoxCellを使用すると、数字やカナ、アルファベットや記号などのほかに、以下の文字に対して入力を制限することができます。
文字の入力制限は、GcTextBoxCell.Formatプロパティに該当するキーワードを設定することで実現します。
  • サロゲート ペア文字
  • 2バイト文字(サロゲート ペア文字を除いた全角文字)
  • JIS X 0208で構成された文字
  • Shift JIS(CP932)で構成された文字
  • IVS(Ideographic Variation Sequence)文字