2016-10-01 1 views
0

VS2015とC#を使用するMaskedTextBoxのコンテナモーダルフォームが表示されているときに、そのプロンプト文字が削除されないようにするにはどうすればよいですか?

この単純なモーダルFormには、MaskedTextBoxのコントロールがあります。
ModalForm.ShowDialog()で示される最初の時間のたびに、対照中のPromptCharがなくなった。この問題を再現するために

public ModalForm() 
    { 
     InitializeComponent(); 

     maskedTextBox1.Mask = "00/00/0000"; // happens with any 
     maskedTextBox1.TextMaskFormat = MaskFormat.IncludeLiterals; 
    } 

コードメインFormのために:ときにその内容が変更さ

public partial class Form1 : Form 
    { 
     private ModalForm modalForm = new ModalForm(); 

     private void button1_Click(object sender, EventArgs e) 
     { 
      modalForm.ShowDialog(); 
     } 
    } 

コントロールのプロンプトが再び表示されますが、最初のビューでは存在しません。

TextMaskFormatプロパティをIncludePromptAndLiteralsに設定することは解決策ですが、.Textをクリーンアップする必要があります。
これを処理する別の方法はありますか。すべてのMaskedTextBoxコントロールは常にデフォルトのプロンプトを表示する必要があります、私に必要となっています。

+0

デフォルトプロンプトを助け?、フォームのShownイベントでこれを試してみてください入力した以前の値が表示されますか? showdialogの後に毎回デフォルトのプロンプトを表示したいのですが、たとえ値「= 11/11/1111」で閉じることさえできますか?そうでない場合は、コントロールのスクリーンショットをいくつか入れてください。 – Berkay

+0

'.ShowDialog()'を2回目に呼び出すとプロンプトが失われるなど、値は保持されます。 この問題は上記のコードで再現できます。例えば。 '' 2_/1_/_ 85_ ''を入力してフォームを閉じてもう一度開くと、コントロールは '' 2/1/85 "'を表示します。私が望むのは、プロンプトのチャーを保持することです。 – Shin

+0

'AllowPromptAsInput = false'を設定していますか? – Berkay

答えて

0

private void ModalForm_Shown(object sender, EventArgs e){ 
      if (!maskedTextBox1.MaskCompleted) // if there is missing parts it will return false, every false means prompts need in control 
      { 
       string tempText = maskedTextBox1.MaskedTextProvider.ToDisplayString(); // get the last value with prompts 
       maskedTextBox1.Text = ""; 
       maskedTextBox1.Text = tempText; // then set the last value. 
      } 
     } 

ホープ、ダイアログクローズ後に失わ

関連する問題