#c# #winforms #maskedtextbox
#c# #winforms #maskedtextbox
Вопрос:
Использование VS 2015 и C #…
У меня есть этот простой модал Form
с одним MaskedTextBox
элементом управления.
Каждый раз после первого, который ModalForm
отображается с .ShowDialog()
помощью, PromptChar
элемент управления in исчезает.
Чтобы воспроизвести эту проблему:
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. Приглашение по умолчанию теряется после закрытия диалогового окна? Показывает ли он предыдущее значение, которое вы вводите? Вы хотите видеть приглашение по умолчанию каждый раз после showdialog, даже если вы закрываете его значением, т.е. =
11/11/1111
? Если нет, пожалуйста, разместите несколько снимков экрана элемента управления.2. Приглашение теряется
.ShowDialog()
при повторном вызове и так далее, значения сохраняются. Вы можете воспроизвести эту проблему с помощью приведенного выше кода. Например, если вы введете"2_/1_/_85_"
, затем закроете форму и снова откроете ее, появится элемент управления"2 / 1/ 85"
. Чего бы я хотел, так это сохранить символ подсказки.3. Настройка
AllowPromptAsInput = false
работает?4. @Berkay Это тоже не работает. Странно, каждый раз, когда символы подсказки исчезают, если элемент управления фокусируется и вводится значение, они внезапно появляются снова.
5. Почему
.Text
нужно очищать, еслиTextMaskFormat
естьIncludePromptAndLiterals
?
Ответ №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.
}
}
Надеюсь, это поможет,