0

Windows Phone 8 で、電話のテキスト ボックスを選択してテキストを入力した場合、このテキストをマスクしたいのですが、これを実現するにはどうすればよいですか?

4

2 に答える 2

0

.XAML ファイルで、TextBox に TextChanged イベントを追加します。

<TextBox Name="tvCelular" TextChanged="OnTextCelularChanged" MaxLength="14" InputScope="Number"/>

クラス Mask.cs を作成します。

/// <summary>
/// created by MAYCON CARDOSO
/// </summary>
public class Mask {
    private bool isUpdating = false;
    private string old = "";

    public String unmask(String s) {
        return s.Replace(".", "").Replace("-", "")
                .Replace("/", "").Replace("(", "")
                .Replace(")", "");
    }

    public void performFilter(string mask, TextBox ediTxt) {
        string s = ediTxt.Text;

        String str = unmask(s);

        String mascara = "";
        if (isUpdating) {
            old = str;
            isUpdating = false;
            return;
        }
        int i = 0;
        foreach(char m in mask.ToCharArray()) {
            if (m != '#' && str.Length != old.Length) {
                mascara += m;
                continue;
            }
            try {
                mascara += str[i];
            }
            catch (Exception e) {
                break;
            }
            i++;
        }

        isUpdating = true;
        ediTxt.Text  = mascara;
        ediTxt.SelectionStart  = mascara.Length;
    }
}

あなたのcsファイルにこのコードを追加してください

 private void OnTextCelularChanged(object sender, TextChangedEventArgs e) {
        mCelularMask.performFilter("(##)####-#####",tvCelular);    
    }
于 2016-08-08T14:30:11.633 に答える