En utilisant VS 2015 et C# ...Comment éviter que MaskedTextBox PromptChar soit supprimé, lorsque son formulaire modal de conteneur est affiché?
J'ai ce simple modal Form
avec juste un contrôle MaskedTextBox
sur elle.
Chaque fois après le premier que ModalForm
est affiché avec .ShowDialog()
, le PromptChar
dans le contrôle a disparu.
Pour reproduire ce problème:
public ModalForm()
{
InitializeComponent();
maskedTextBox1.Mask = "00/00/0000"; // happens with any
maskedTextBox1.TextMaskFormat = MaskFormat.IncludeLiterals;
}
Code pour principal Form
:
public partial class Form1 : Form
{
private ModalForm modalForm = new ModalForm();
private void button1_Click(object sender, EventArgs e)
{
modalForm.ShowDialog();
}
}
l'invite du contrôle apparaît à nouveau lorsque son contenu change, mais en première vue n'est pas présente.
La définition de la propriété TextMaskFormat
à IncludePromptAndLiterals
peut être une solution, mais il faut ensuite nettoyer .Text
.
Existe-t-il une autre façon de gérer cela? Est devenu nécessaire pour moi, que tous les contrôles MaskedTextBox
doivent toujours montrer son invite par défaut.
invite par défaut perdu après dialogue étroit? Est-ce qu'il montre la valeur précédente que vous entrez? Voulez-vous voir l'invite par défaut à chaque fois après showdialog, même si vous la fermez avec une valeur i.e = '11/11/1111'? Si non, s'il vous plaît mettre quelques captures d'écran du contrôle. – Berkay
L'invite est perdue lors de l'appel '.ShowDialog()' pour la deuxième fois et ainsi de suite, les valeurs sont conservées. Vous pouvez reproduire ce problème avec le code ci-dessus. Par exemple. si vous entrez '" 2_/1 _/_ 85_ "', fermez le formulaire et ouvrez-le à nouveau, le contrôle affiche '" 2/1/85 "'. Ce que j'aimerais, c'est garder le caractère rapide. – Shin
La définition de 'AllowPromptAsInput = false' fonctionne? – Berkay