WPFのPasswordBox | 熱脳しゃちょのブログ

熱脳しゃちょのブログ

おせっかい焼SE兼プログラマ兼……の辛い日々と、思う事なぞ

バーチャルキーボードで入力できないようで。
ネット上で、いくつか対策があるようですけど、TextBox派生させる方法をやってみました。
using System.Windows.Controls;

  class PassBox : TextBox
  {
    private bool _onChanged;
    private string _pass = string.Empty;
    protected override void OnTextChanged(TextChangedEventArgs e)
    {
      if (_onChanged) return;
      var car = 0;
      var str = _pass;
      foreach (var change in e.Changes)
      {
        str = str.Substring(0, change.Offset) + Text.Substring(change.Offset, change.AddedLength) + str.Substring(change.Offset+ change.RemovedLength);
        car = change.Offset + change.AddedLength;
      }
      _pass = str;
      _onChanged = true;
      Text = new string('*', str.Length);
      _onChanged = false;
      Select(car, 0);
      base.OnTextChanged(e);
    }

    public string Password
    {
      get { return _pass; }
      set { Text = value; }
    }
  }
Passwordで設定・取得ができます。
Textを読み込んでも、梅干し食べ過ぎみたい、あるいは犬ぞりに乗ってる感じになるだけです。
利用等に何の制限もかけませんし、何の保障もしません。
自由にお使いください。