WPF TextBoxの複数行


364

フィードバックを送信するためのアプリを開発しています。

基本的に私はTextBoxコメントを作ろうとしていますが、私はWinFormsに慣れていMultiLine=trueます。ここではMinLines3に設定していますが、ユーザーがこのブロックのどこにでも入力できる場合は、Enterキーを押してドットポイントのようなものを入力できるようにしたいのです。例えば:

- Item 1        blah
- Item 2                blahlb lahbvl   d

しかし現時点では、テキストはすべて1行にとどまっています。

- Item 1         blah - Item 2                      blahb blahb blah

これらのコメントは、送信されるメールの本文を埋めるのに役立ちます。この文字列を電子メールの本文文字列に挿入するときに、同じ書式を簡単に維持できない場合(入力したときと同じように送信されたときのように見える場合)は無意味かもしれません。

私がやりたいことを達成できますか、それともすべてのテキストを1行にしておく必要がありますか?

回答:


757

TextBoxを有効TextWrapping="Wrap"AcceptsReturn="True"します。

また、有効にすることAcceptsTabSpellCheck.IsEnabledできます。


1
@itowlsonちょっとあなたの方法で複数行のテキストボックスを作成するとうまくいきますがlabel1.Content = textBox1.Text.Length;、この行でテキストボックスのテキストカウンターを設定したいのですが、テキストボックスカウンターでEnterキーを押すと2文字増えます。このタスクを実行するにはどうすればよいですか。
Jay Shukla 2013

2
これは、改行が2文字(CR / LF)であるために発生します。単一の文字として扱いたい場合は、のようにしtextBox1.Text.Replace("\r\n", " ").Lengthます。ただし注意してください。バックエンドが文字数を制限しているためにこれがユーザーフィードバックとして意図されている場合、バックエンドがそれをカウントする方法である場合は、CR / LFを2文字としてカウントする必要があります。
itowlson 2013

私も、このリンクでは、この問題を尋ねるstackoverflow.com/questions/18459908/...
ジェイ・シュクラ

1
また、VerticalContentAlignmentがStretchに設定されていることを確認してください
eran otzap

1
また、スクロールバーを表示するために、周囲のScrollVewerコンポーネントを追加します。
Borko Djurovic 2015

34

また、私と同じように、XAMLで直接(エディターを使用せずに)コントロールを追加すると、これらの2つのプロパティを設定した後でも、使用可能な高さまで拡大されないことに不満を感じるかもしれません。

TextBoxをストレッチするには、を設定しHeight="Auto"ます。

更新:

振り返ってみると、これは、アプリケーションリソースのどこかにあるアプリケーションの標準に対する高さを指定するTextBoxのデフォルトスタイルのおかげで、必要だったに違いないと思います。これがあなたを助けたなら、これをチェックする価値があるかもしれません。


19

以下は、複数行のテキストを受け入れるXAMLことができるサンプルで、TextBox独自のスクロールバーを使用しています。

<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>

12

@Andre Luus Height="Auto"とは異なり、設定はTextBoxストレッチしません。私が見つけた解決策は設定することでしたVerticalAlignment="Stretch"


1
「VerticalAlignment」のデフォルト値「Stretch」です。MSDNを参照してください。そして、はい、それは本当に私のために働いた。それはテキストボックスを配置したコントロールに依存するかもしれませんが、それは非標準的なものでしたか?
Andre Luus 2013年

1
別の可能性は、VerticalAlignmentに異なる値を定義したTextBoxのスコープ内のどこかに定義されたテキストボックスのデフォルトスタイルがあることです。Snoopで確認します。
Andre Luus 2013年

1
コンテナが固定されている場合、高さの自動調整は機能しません。最上位のすべての親コンテナは展開できる必要があります。スクロールバーでのラップも機能します。
Lee Louviere、2014年

5

専用のプロパティにWPFに対応

Winformsプロパティ:TextBox.Multiline = true

あるWPFプロパティは:TextBox.AcceptsReturn = true

<TextBox AcceptsReturn="True" ...... />

など、他のすべての設定は、VerticalAlignementWordWrapなどは、唯一のUIでどのようにテキストボックスの相互作用を制御するが、影響はありませんMultiline行動を。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.