DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【C#】C1FlexGridの編集セルの数字の位置

環境/言語:[(WindowsXP,C#)]
分類:[.NET]

2008/04/24(Thu) 19:43:43 編集(投稿者)

お世話になります。
今、FlexGridを使って、C#で開発をしております。
1列だけを数字のみの入力で、編集可能にしております。
桁数制御もしないといけないという事で、
this.c1FlexGrid.Cols[データテーブル名.カラム名.ColumnName].EditMask = "&&&&&&&&&; ";
(9桁下線なし)で、桁数制御をしました。
編集していない状態の時は、右寄せ(デフォルト)、カンマ編集をしていて、うまく表示されるのですが、
編集時に数字を入力すると、セルの真ん中から9文字分のスペースありで入力されてしまいます。
TextAlignなども使用してみましたが、変わりません。
入力時にも右から順に数字が入力される方法を教えて頂けないでしょうか?
ヒントでも構いません。
どうぞよろしくお願い致します。
■No21927に返信(こものさんの記事)
> this.c1FlexGrid.Cols[データテーブル名.カラム名.ColumnName].EditMask = "&&&&&&&&&; ";
とりあえず、これでは数字以外も入力できてしまうのでまずいですよね。

で、やりたいことは、郵便番号や電話番号のような定型数字の入力
ではなくて数値の入力なんですよね?

バージョンがわからないので正確なことは言えませんが
この場合、EditMaskを使うのではなく、ChangeEditイベントに
コードを書いたほうが得策かと思います。

詳しくは、ヘルプの「数値のみの入力を許可するには?」と
「文字数単位で入力制限をする方法は?」で確認してください。
2008/04/25(Fri) 13:40:42 編集(投稿者)

■No21930に返信(zzzingさんの記事)
>>this.c1FlexGrid.Cols[データテーブル名.カラム名.ColumnName].EditMask = "&&&&&&&&&; ";
> とりあえず、これでは数字以外も入力できてしまうのでまずいですよね。
データテーブルをバインドしていて、そのテーブルのそのフィールドの型がInt型だったので、
勝手に数字しか入力出来ない様になっていました。

> で、やりたいことは、郵便番号や電話番号のような定型数字の入力
> ではなくて数値の入力なんですよね?
はい。表示では、カンマありの9桁までの数字を求めていました。

> この場合、EditMaskを使うのではなく、ChangeEditイベントにコードを書いたほうが得策かと思います。
> 詳しくは、ヘルプの「数値のみの入力を許可するには?」と「文字数単位で入力制限をする方法は?」で確認してください。

zzzing様

返信どうもありがとうございました!!
ヘルプの「文字数単位で入力制限をする方法は?」を参考にさせて頂き、一応?解決する事が出来ました!!
ヘルプで教えて頂いた文字そのままを検索すれば良かったので、
すぐに発見出来、なんとお優しい方なんだろうと思いました。
本当にどうもありがとうございます!!
フィールドがInt型になっていたので、10桁目を入れた時点で2147…とInt型の最大値に数字が変わってしまい、
それを制御するために、以下の様なコードにしました。

string test = string.Empty;
private void c1FlexGrid_ChangeEdit(object sender, EventArgs e)
{
  // 3列目のみ
  if (this.c1FlexGrid.Col == 3)
  {
    if (this.c1FlexGrid.Editor is TextBox)
    {
      TextBox tb = (TextBox)this.c1FlexGrid.Editor;
      // 9桁目が入力された時(カンマも入るので###,###,###の11字)
      if (tb.TextLength == 11)
      {
        test = this.c1FlexGrid.Editor.Text;
      }
      else if (tb.TextLength > 11)
      {
        // 10桁目になって最大値に変わる前に、9桁の時の値を代入 
        this.c1FlexGrid.Editor.Text = test;
        tb.SelectionStart = tb.TextLength;
      }
    }
  }
}

これで、表示面での制御は出来たのですが、このためにstringのグローバル変数を定義するのはイイのかなぁと疑問です。
一応解決致しましたが、これよりもこうした方がいいよ!というものがありましたら、ぜひご教授願います。
どうぞよろしくお願い致します。
しばらく待ってみてから解決済み!とさせて頂きます。
ありがとうございました!!
> しばらく待ってみてから解決済み!とさせて頂きます。
> ありがとうございました!!

遅くなりましたが、問題なく動いているので、解決済みとさせて頂きます★
どうもありがとうございました!!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板