Je développe une application pour envoyer des commentaires.
Fondamentalement, j'essaie de faire un TextBox
pour les commentaires, mais je suis habitué aux WinForms MultiLine=true
. J'ai réglé MinLines
sur 3, ce qui est en train d'arriver, mais de préférence j'aimerais que l'utilisateur puisse taper n'importe où dans ce bloc - comme appuyer sur Entrée et faire une sorte de point. Par exemple:
- Item 1 blah
- Item 2 blahlb lahbvl d
Mais pour le moment, le texte reste sur une seule ligne.
- Item 1 blah - Item 2 blahb blahb blah
Ces commentaires permettront ensuite de remplir le corps d'un e-mail envoyé. Cela peut être inutile si je ne peux pas facilement conserver le même formatage lorsque je mets cette chaîne dans la chaîne du corps de l'e-mail (de sorte qu'elle ressemble à ce qu'elle est lorsqu'elle est envoyée comme elle le fait lors de la frappe).
Puis-je réaliser ce que je recherche ou dois-je le laisser comme tout le texte sur une seule ligne?
label1.Content = textBox1.Text.Length;
avec cette ligne, son travail mais quand j'appuie sur Entrée dans le compteur de la zone de texte augmentera de 2 caractères. comment puis-je faire cette tâche s'il vous plaît aidez-moi.textBox1.Text.Replace("\r\n", " ").Length
. Soyez prudent cependant: si cela est considéré comme une rétroaction de l'utilisateur car votre serveur principal limite le nombre de caractères, vous devrez peut-être compter le CR / LF comme deux caractères si c'est ainsi que le serveur principal le comptera!De plus, si, comme moi, vous ajoutez des contrôles directement en XAML (sans utiliser l'éditeur), vous pourriez être frustré qu'il ne s'étende pas à la hauteur disponible, même après avoir défini ces deux propriétés.
Pour étirer TextBox, définissez le
Height="Auto"
.MISE À JOUR:
Rétrospectivement, je pense que cela a dû être nécessaire grâce à un style par défaut pour TextBoxes spécifiant la hauteur à une norme pour l'application quelque part dans les ressources de l'application. Il peut être utile de vérifier cela si cela vous a aidé.
la source
Voici l'exemple
XAML
qui permettraTextBox
d'accepter du texte multiligne et il utilise ses propres Scrollbars:la source
Contrairement à @Andre Luus, le réglage
Height="Auto"
ne fera pas l'TextBox
étirement. La solution que j'ai trouvée était de mettreVerticalAlignment="Stretch"
la source
La seule propriété correspondant dans WPF au
Propriété Winforms :
TextBox.Multiline = true
est la WPF propriété:
TextBox.AcceptsReturn = true
.Tous les autres paramètres, tels que
VerticalAlignement
,WordWrap
etc., contrôlent uniquement la façon dont la TextBox interagit dans l'interface utilisateur, mais n'affecte pas leMultiline
comportement.la source