当显示其容器模态窗体时,如何避免MaskedTextBox PromptChar被删除?

时间:2016-10-01 14:18:38

标签: c# winforms maskedtextbox

使用VS 2015和C#...

我有一个简单的模态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控件必须始终显示其默认提示符。

1 个答案:

答案 0 :(得分:0)

在表单的Shown事件

上尝试此操作
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.
            }
        }

希望有所帮助,