2011-02-11 7 views
1

私はユーザにXX:XX:XXの形式で時間値を入力させるTextBoxを持っています。私はすでに、この形式で入力していることを確認するための検証を行っています。しかし、今ではコロンを自動的に持っていたいと思います。私はそれらをテキストボックスに入れたいと思います。ユーザーが数字を入力すると、コロンをスキップするだけです。 TextBoxのための何らかの形式のデコレータを持つことは可能ですか?WPF Textboxはデフォルトのテキストを使用します

編集:私はあなたがバニラWPFに固執する場合は、カスタムコントロールを作成することができ、WPFのツールキット

http://wpftoolkit.codeplex.com/wikipage?title=MaskedTextBox&referringTitle=Home

答えて

4

を使用していますし、 3つのテキストボックスを追加します。

これらの間にコロンを置き、特定のテキストボックスから別のテキストボックスにフォーカスを渡すと同時に数字のみを受け入れるために、キーダウンイベントを処理します。

もう一度:ツールキットを使用すると作業が少なくなる可能性があります。

+0

可能性が高い場合、私はバニラWPFと一緒にいたいと思います。私はWPF 4を使用しています。 – s73v3r

+0

ツールキット全体を使用したくない場合は、いくつかの優れたコントロールがあるので価値がありますが、ソースにアクセスして[必要なコントロールだけをhttp://wpftoolkit.codeplex.com/SourceControl/changeset/view/68480#1679740) –

+1

私は@Tom Dudfieldに同意します。そこには素晴らしいものがたくさんあります。あなたはWPFに組み込まれた機能を見つけるつもりはなく、ツールキットが何をしているのか(デフォルトのテキストボックスから派生し、独自のものを派生させている)正確にやってしまうでしょうが、利益はありません... –

0

からマスクされたテキストボックスを使用することができますWPF 4に

0

Ernoとして3つのテキストボックスを使用するのがおそらく良い解決策ですが、TextChangedイベントを使用してテキストにコロンを追加すると(ユーザーを混乱させる可能性があります)、2番目以降に挿入するコードがあります第5キャラクター:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBox tb = sender as TextBox; 
    if (e.Changes.Count == 1) 
    { 
     if (e.Changes.ElementAt(0).AddedLength == 1 && (tb.Text.Length == 2 || tb.Text.Length == 5)) 
     { 
      tb.Text += ":"; 
      tb.SelectionStart = tb.Text.Length; 
     } 
    } 
} 
関連する問題