tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataGridViewのTextBoxColumnについて
記事No6397
投稿日: 2007/10/03(Wed) 18:17
投稿者PON
VB2005の初心者のPONと申します。
今、画面を作成していてどうしても分からなくなり、ご質問させていただきます。

現在、DataGridViewのTextBoxColumnに数値(0〜9)のみ入力出来るようにしています。
この際、入力する値が「0900」や「00900」等のように、
「0」からは入力は出来ないよう制限をかけたいと思っています。
今のままだと、「900」と入力する場合が、「0900」など頭に「0」を着ける事が可能です。

自分で結構調べてみたのですが、解決策が見つからず困っております。

ご教授よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: DataGridViewのTextBoxColumnについて
記事No6398
投稿日: 2007/10/03(Wed) 19:01
投稿者るしぇ
文字列を先頭から調べて0だったら取ればいいだけでは?

[ツリー表示へ]
タイトルRe^2: DataGridViewのTextBoxColumnについて
記事No6400
投稿日: 2007/10/03(Wed) 19:35
投稿者PON
> 文字列を先頭から調べて0だったら取ればいいだけでは?

るしぇさん、さっそくのご回答ありがとうございます。
今、考えていてちょうど思いつきました。

1.入力が行われた際、文字数がゼロ以外なら0〜9までの入力をする。
2.文字数がゼロなら1〜9までしか入力させないようにする感じですかね。。。

ただ、今度はDataGridViewのTextboxに数字が入力された際、textboxに入力されている文字数をどうやって取ればいいのか分からず詰まりました…

ご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: DataGridViewのTextBoxColumnについて
記事No6401
投稿日: 2007/10/03(Wed) 23:37
投稿者るしぇ
>1.入力が行われた際、文字数がゼロ以外なら0〜9までの入力をする。
実質はテキストボックスの入力制限ですよね?
なら、この条件では漏れがありますよ。

キャレット(文字入力される位置を示すカーソル)の位置が、常に右端なら
良いでしょうが、方向キーやマウスクリックで左端に移動されたら
文字の長さに関係なく先頭に"0"を付けれませんか?

キャレットの位置と合わせて判定するなら可能は可能でしょうが、
入力制限で共通して言われるのがコピペ対策です。"00900"という
文字列をメモ帳からコピーして貼り付けた場合は対応できていますか?

この手の入力制限は、あらゆる掲示板で質問があって回答が付いています。
# ここの掲示板の過去ログにもあります。
もう少し調べてこられることをお勧めします。

> textboxに入力されている文字数
文字列操作でしょ?String クラスのメンバに一通りの関数が用意されています。
ヘルプで確認してください。

[ツリー表示へ]
タイトルRe^4: DataGridViewのTextBoxColumnについて
記事No6403
投稿日: 2007/10/04(Thu) 13:01
投稿者PON
> >1.入力が行われた際、文字数がゼロ以外なら0〜9までの入力をする。
> 実質はテキストボックスの入力制限ですよね?
> なら、この条件では漏れがありますよ。
>
> キャレット(文字入力される位置を示すカーソル)の位置が、常に右端なら
> 良いでしょうが、方向キーやマウスクリックで左端に移動されたら
> 文字の長さに関係なく先頭に"0"を付けれませんか?

確かにそうですね…
方向キーやマウスクリックで左端に移動した場合の事を忘れていました。

> キャレットの位置と合わせて判定するなら可能は可能でしょうが、
> 入力制限で共通して言われるのがコピペ対策です。"00900"という
> 文字列をメモ帳からコピーして貼り付けた場合は対応できていますか?

コピペ対策はまだ出来ておりませんが、今考えているところです。

> この手の入力制限は、あらゆる掲示板で質問があって回答が付いています。
>  # ここの掲示板の過去ログにもあります。
> もう少し調べてこられることをお勧めします。

一通り過去ログは見たつもりでしたが、抜けていたのかも知れません。
るしぇさんの言うとおり、もう少し調べてから質問させてもらいます。

[ツリー表示へ]