- PR -

TextBoxに決められた規則で文字列を入力するには

1
投稿者投稿内容
たにくん
会議室デビュー日: 2005/01/19
投稿数: 19
投稿日時: 2005-03-09 11:27
よろしくお願いします。
VisualBasic.net Windouwsアプリケーションを作っています。

TextBoxに和暦で年号を入力する際に明治を1、大正を2、昭和を3、として
「昭和50年6月30日」を入力する場合に
テンキーでの操作を
3,50,6,30
といった具合に数字だけで入力する方法を検討しているのですが、
私の知識では、Timerで常にTextBoxを監視して、入力する方法しか思いつきません。

自分ではもっと効率のよい方法があると信じているのですが、よい方法ありましたら、ご指導お願いします。
さな
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 59
お住まい・勤務地: 大阪・肥後橋
投稿日時: 2005-03-09 11:35
引用:

たにくんさんの書き込み (2005-03-09 11:27) より:
TextBoxに和暦で年号を入力する際に明治を1、大正を2、昭和を3、として
「昭和50年6月30日」を入力する場合に
テンキーでの操作を
3,50,6,30
といった具合に数字だけで入力する方法を検討しているのですが、
私の知識では、Timerで常にTextBoxを監視して、入力する方法しか思いつきません。


入力は数字で、TextBox上の表示は「昭和50年6月30日」としたいのでしょうか?
Tabに実際の入力値を保存しておき、KeyPressでキー入力された数値をTabに追加し、
その内容を編集して、TextBoxに表示するという方法ではどうでしょうか。
Fujiwo
常連さん
会議室デビュー日: 2002/02/19
投稿数: 20
投稿日時: 2005-03-09 11:39
>私の知識では、Timerで常にTextBoxを監視して、入力する方法しか思いつきません。

TextBox を監視するのであれば、Timer でなく、KeyPress イベントを監視すればよろしいように思います。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-03-09 12:48
たにくんさん、こんにちは。

引用:

テンキーでの操作を
3,50,6,30


#テンキーで操作するなら、 / (スラッシュ)区切りとか . (ドット)区切りの方が良さそうな気もしますが、それは置いといて。
MSDNライブラリの TextBox.TextChanged イベントの説明にテキストの内容を判定するサンプルコードがあったりします。
あと、Control.Validating イベント の使用例なんかも参考になるかも知れません。
たにくん
会議室デビュー日: 2005/01/19
投稿数: 19
投稿日時: 2005-03-09 13:22
さな様、Fujiwo様、くちゃん様、ありがとうございます。

>>入力は数字で、TextBox上の表示は「昭和50年6月30日」としたいのでしょうか?
まったくその通りです。説明がベタで申し訳ないです。

>>#テンキーで操作するなら、 / (スラッシュ)区切りとか . (ドット)区切りの方が良さそうな気もしますが、それは置いといて。
「3,50,6,30」とうのは正確ではありませんでしたね。すみません。
「,」は分かりやすくと思い入れました。
テンキーでの正確な入力順番は
「350630」です(-_-;


さな様、Fujiwo様のご指摘通り、keyPressを駆使して作りたいと思います。
きくちゃん様ライブラリーを探していただきありがとうございます。
ぜひ、参考にさせて頂きます。
進展ありましたら、またご報告させていただきます。ありがとうございます。

[ メッセージ編集済み 編集者: たにくん 編集日時 2005-03-09 13:23 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-03-09 13:33
こんにちは、じゃんぬねっと です。
私の場合、それだけのためにそんな機能を実装すること自体面倒なので、
TextBox を継承したカスタム コントロールに Format プロパティなどを追加しています。

  http://jeanne.wankuma.com/library/

日付専用ならそれはそれで良いのですが、Format が決めれれば、
別のプロジェクトでも使えますよね。
_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-03-09 20:52
> テンキーでの正確な入力順番は
> 「350630」です(-_-;
 1月2日と、12月は、どうやって区別しましょうか?「35012」さて、これは「昭和50年」の、12月?1月2日?
 また、BSキーやDELキーはどうします?
 KeyPressはお勧めしません。「350630」という文字列を、Pasteされたらどうします?もちろん、どこかに「昭和60年5月1日」という文字列があったので、それをコピーペーストすることも想定できませんか?もちろん、こう考え始めると「2000/1/1」とかも考慮しなければならなくなってきますけど。

 ということで、仕様の詰めが甘いと思います。ユーザは、仕様を考えた人が想定したとおり(仕様通り)に使用するとは限りません。


# 夜しか出てこられなくてすみません。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)