2016-04-03 11 views
1

2つ以上のテキストボックスに対して共通の関数を呼び出して、キー入力が浮動小数点数だけが入力を受け入れることを確認できるようにしたい。C#でのテキストボックスの浮動小数点数のキー入力機能チェックの共通関数の書き方は?

これは私のサンプルコードです。これは、単一のテキストボックス(tbL1Distance)でのみ動作します。しかし、私はそれを共通のテキストボックスコントロールとして使いたい。

private void tbL1Distance_KeyPress(object sender, KeyPressEventArgs e) 
{ 
     char ch = e.KeyChar; 

     if (ch == 46 && tbL1Distance.Text.IndexOf('.') != -1) 
     { 
      e.Handled = true; 
      return; 
     } 

     if (!Char.IsDigit(ch) && ch != 8 && ch != 46) 
     { 
      e.Handled = true; 
     } 
} 

ありがとうございます。

+0

新しいコントロールを作成し、TextBoxを継承し、 'OnKeyPress()'メソッドをオーバーライドします。 –

+0

コードサンプルを渡す手伝ってください。私のコードを編集することができます。お願いします。 @VisualVincent – Rakib

+0

はい、数分お待ちください... –

答えて

1

OnKeyPressメソッドをオーバーライドするTextBoxを継承し、独自のコントロールを作成するだけで簡単に作成できます。

public class CustomTextBox : System.Windows.Forms.TextBox 
{ 
    protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e) 
    { 
     char ch = e.KeyChar; 

     if (ch == 46 && this.Text.IndexOf('.') != -1) //Replaced 'tbL1Distance' with 'this' to refer to the current TextBox. 
     { 
      e.Handled = true; 
     } 
     else if (!Char.IsDigit(ch) && ch != 8 && ch != 46) 
     { 
      e.Handled = true; 
     } 
     base.OnKeyPress(e); 
    } 
} 

行われ、Buildメニューに移動し、Build <your project name here>を押すと、あなたのコントロールが今、あなたのツールボックスの上に見つけることができます。今すぐすべての通常のTextBoxをあなた自身のものに置き換えてください。

Building a project

あなたの検証が失敗した場合KeyPressイベントがまったく発射したくない場合は、あなただけの両方if -statementsでreturn;を追加することができます。

+0

@Rakib:これが機能する場合は、投稿の左側にある緑色のチェックマークを押して、それを受け入れられた回答としてマークしてください。これにより、回答者には評判のポイントが+15、質問の質問者には評判のポイントが+2点与えられます。 :) –

関連する問題