2017-06-12 7 views
0

私は新年の準備をしています。下記画像を見れば:選択したタイプに応じて単純なテキストボックスに入力を調整します

This picture

あなたは、私はそのような0-7のsans 8および9用としてのみ特定の文字を受け入れるようにする方法を見つけ出すことはできませんテキストボックスを持っていることがわかります例えば8進数。

誰もができれば...

if (octalRadioButton.Checked) 
      { 
       if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) || char.IsWhiteSpace(e.KeyChar) || char.IsDigit('7') || char.IsDigit('8')) 

が、それはほとんど何もしなかった:

private void inputBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (hexRadioButton.Checked) 
     { 
      if (char.IsWhiteSpace(e.KeyChar)) 
      { 
       e.Handled = true; 
      } 
     } 
     if (decimalRadioButton.Checked) 
     { 
      if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) || char.IsWhiteSpace(e.KeyChar)) 
      {      
       e.Handled = true; 
      } 
     } 

     if (octalRadioButton.Checked) 
     { 
      if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) || char.IsWhiteSpace(e.KeyChar)) 
      { 
       e.Handled = true; 
      } 
      e.Handled = false; 
     } 

     if (radioButton1.Checked) 
     { 
      if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) || char.IsWhiteSpace(e.KeyChar)) 
      { 
       e.Handled = true; 
      } 
      e.Handled = false; 
     } 
    } 

私もこのような何かをしようとしている。ここで

は、これまでの私のコードです私を助けて、私は本当に幸せだろう。

if (octalRadioButton.Checked) 
{ 
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) || char.IsWhiteSpace(e.KeyChar)) 
    { 
     e.Handled = true; 
    } 
    e.Handled = false; <---------- 
} 

あなたはtrueに設定した後、再度falseに設定...それは無効な文字を入力することができますだから、なぜだ::)

+0

個々のタイプ(dec、hexなど)のバリデーションを組み合わせることで、ソリューションを組み合わせることができるはずです。ほとんどの場合、正規表現を使用して入力を検証するソリューションが見つかります。すべての単一のKeyPressのcharを非常に厄介なように見える。時間をかけて、各タイプの既存のソリューションを検索し、それに応じて適用します。 – Filburt

答えて

2

私は大きな問題はここにあると思います。

その行を削除します。

第二の問題は、あなたがこの問題を修正するには8および9を含むすべての数字を、受け入れている、私はこのような何かをするだろうということです。

var validChars = new[] {'1', '2', '3', '4', '5', '6', '7'}; 
if (!validChars.Contains(e.KeyChar)) { 
    e.Handled = true; 
} 

あなたは、他の拠点のために、このアプローチを使用することができます。

編集:

が実は、私はドキュメントを見て、そしてHandledは明らかに動作しません。 SuppressKeyPressプロパティが必要で、KeyDownイベントでtrueに設定します。

+0

感謝します!それは私が想像していたよりずっと簡単でした! –

関連する問題