2016-10-05 49 views
0

テキストボックス入力をさまざまな形式にキャストする方法を知りたいと思います。私はFormat.String()を使用してみました。なぜなら、それは「解決策」なので、私はオンラインでいくつかの調査をした後に見つけましたが、それは私にとってはうまくいきませんでした。テキストボックスの書式設定(電話番号、携帯電話番号、電子メール)

private void RegHomePhoneTBox_TextChanged(object sender, EventArgs e) 
    { 
     string s = RegHomePhoneTBox.Text; 
     double sAsD = double.Parse(s); 
     RegHomePhoneTBox.Text = string.Format("{0:###-####}", sAsD).ToString(); 
    } 

これは私が使用したコードブロックであり、エラーをスローし続けます。

型「にSystem.FormatException」の未処理の例外は がmscorlib.dllで発生しました追加情報:入力文字列が正しい 形式ではありませんでした。

+0

何だろうあなたのSASD値を?このようなもの2222222 – Uba

+0

TextBoxのテキストをsAsDで取得することを考えていました。 3443434と同様に、344-3434とフォーマットします。 –

+0

TextChangedイベントの代わりに、Leaveイベントでコードを試してみるか、MaskedTextBoxコントロールを使用してみてください – Nofuzy

答えて

0

MaskedTextBoxを使用することをお勧めします。通常のテキストボックスのように機能しますが、ユーザーは特定の形式でテキストを入力する必要があります。

特定のケースでは、Maskプロパティを"000-0000"に設定するだけです。ここで

のドキュメントです:

https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx

MaskCompletedように非常に便利ですMaskedTextBox内の他の特性の多くは、あります。

0

これを試してみてください:

private void RegHomePhoneTBox_TextChanged(object sender, EventArgs e) 
    { 
     string s = RegHomePhoneTBox.Text; 
     if (s.Length == 7) 
     { 
      double sAsD = double.Parse(s); 
      RegHomePhoneTBox.Text = string.Format("{0:###-####}", sAsD).ToString(); 
     } 
     if (RegHomePhoneTBox.Text.Length > 1) 
      RegHomePhoneTBox.SelectionStart = RegHomePhoneTBox.Text.Length; 
     RegHomePhoneTBox.SelectionLength = 0; 
    } 
+0

Leaveイベントと同じように動作します。 –

+0

もう一度確認してください。 – Nofuzy

+0

もう一度お試しください。忍耐力ありがとうございます。 –

関連する問題