如何避免MaskedTextBox PromptChar被删除,当它的容器模态表单显示

本文关键字:模态 显示 表单 MaskedTextBox 何避免 PromptChar 删除 | 更新日期: 2023-09-27 18:11:17

使用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控件必须始终显示其默认提示符。

如何避免MaskedTextBox PromptChar被删除,当它的容器模态表单显示

在Form的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.
            }
        }

希望帮助,