- PR -

コンボボックスで数値入力のみに入力文字制限するには

1
投稿者投稿内容
00_Number
常連さん
会議室デビュー日: 2003/11/04
投稿数: 37
投稿日時: 2003-12-18 21:38
いつもお世話になっております。

コンボボックスで0〜9以外の文字を入力不可にする方法を調べているのですが分かりません。
TextboxなどではKeyPressイベント

If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack Then
e.Handled = True
End If

のようにしてやれば簡単に実現出来るようですが、コンボボックスでは同じようにやっても
実現出来ませんでした。

この事に関連した情報をご存知の方おられましたらアドバイスを頂きたいと思います。
よろしくお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-12-18 23:34
こんにちわ。諸農です。

引用:

00_Numberさんの書き込み (2003-12-18 21:38) より:

コンボボックスで0〜9以外の文字を入力不可にする方法を調べているのですが分かりません。



とても安直な方法ですが(^^;
ErrorProviderとTextChangeイベントで次の様にしてみてはいかがでしょうか。

コード:
private void comboBox1_TextChanged(object sender, System.EventArgs e)
{
    try
    {
       int.Parse(comboBox1.Text);
       errorProvider1.SetError(comboBox1,"");
    }
    catch(Exception ex)
    {
       errorProvider1.SetError(comboBox1,"数値を入力してください");
       comboBox1.SelectionLength = comboBox1.Text.Length;
       comboBox1.Focus();
    }
}



ではでは(^^)/

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-19 00:04
 Validatingイベントで入力を検証する、というのはどうでしょう?

Private Sub ???_Validating(Sender As Object, args As CancelEventArgs) _
  Handles ????.Validating
 args.Cancel = System.Text.RegularExpressions.Regex.IsMatch(文字列 _
  , "[^0-9]*")
End Sub

こんな感じかな??

 問題は、フォーカスが移動しようとすると発生すること。「キャンセル」ボタンなどはCausesValidationプロパティをFalseにして、発生しないようにする。
 ところが、システムメニュー(ウインドウの右上の3つのボタン)は、バリデータを無効にできないんですねぇ、困ったことに。。。
00_Number
常連さん
会議室デビュー日: 2003/11/04
投稿数: 37
投稿日時: 2003-12-19 10:02
Jubeiさん、Jittaさん、ご回答ありがとうございます。

お二人に教えて頂いた方法を試しつつ検討してみようと思います。
ありがとうございました。
1

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