Как избежать удаления MaskedTextBox PromptChar, когда показана его модальная форма контейнера?

Использование VS 2015 и C#…

У меня есть этот простой модальный Formтолько MaskedTextBoxконтроль над ним.
Каждый раз после первого , который ModalFormпоказан с.ShowDialog(), PromptCharв элементе управления отсутствует.

Чтобы воспроизвести эту проблему:

    public ModalForm()
    {
        InitializeComponent();

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

Код для main 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 ответ

  1. Попробуйте это на 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.
                }
            }
    

    Надежда помогает,