ChatGPT解决这个技术问题 Extra ChatGPT

WPF 文本框的多行

我正在开发一个应用程序来发送一些反馈。

基本上我正在尝试为评论创建一个 TextBox,但我已经习惯了 WinForms MultiLine=true。我已将 MinLines 设置为 3,这已经到了那里,但如果用户能够在此块中的任何位置键入,我最好喜欢它 - 比如按 Enter 并做点点之类的事情。例如:

- Item 1        blah
- Item 2                blahlb lahbvl   d

但目前文本都停留在一行上。

- Item 1         blah - Item 2                      blahb blahb blah

然后,这些评论将有助于填写发送的电子邮件的正文。如果在将此字符串放入电子邮件正文字符串时无法轻松保持相同的格式(这样发送时的格式与键入时的格式相同),那可能毫无意义。

我可以实现我所追求的还是必须将其作为所有文本保留在一行上?


W
WonderWorker

在您的 TextBox 上启用 TextWrapping="Wrap"AcceptsReturn="True"

您可能还希望启用 AcceptsTabSpellCheck.IsEnabled


嘿@itowlson,如果我用你的方法创建多行文本框效果更好,但如果我想用这条线设置文本框文本计数器label1.Content = textBox1.Text.Length;,它的工作但是当我在文本框计数器中按回车时会增加 2 个字符。我该如何完成这项任务,请帮助我。
发生这种情况是因为换行符是两个字符 (CR/LF)。如果要将其视为单个字符,请执行 textBox1.Text.Replace("\r\n", " ").Length 之类的操作。不过要小心:如果这是因为您的后端限制了字符数而作为用户反馈,那么您可能需要将 CR/LF 计为两个字符,如果后端会这样计算的话!
我也在这个链接stackoverflow.com/questions/18459908/…中问过这个问题
还要确保 VerticalContentAlignment 设置为 Stretch
还要添加周围的 ScrollVewer 组件以具有滚动条。
A
Andre Luus

此外,如果像我一样,您直接在 XAML 中添加控件(不使用编辑器),您可能会感到沮丧,因为即使设置了这两个属性,它也不会拉伸到可用高度。

要使 TextBox 拉伸,请设置 Height="Auto"

更新:

回想起来,我认为这一定是必要的,这要归功于 TextBoxes 的默认样式,它在 App 资源中的某处为应用程序指定了某个标准的高度。如果这对您有帮助,可能值得检查一下。


P
Pang

下面是一个示例 XAML,它允许 TextBox 接受多行文本并使用自己的滚动条:

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

m
marsh-wiggle

WPF 中唯一对应的属性

Winforms 属性:TextBox.Multiline = true

WPF 属性:TextBox.AcceptsReturn = true

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

所有其他设置,例如 VerticalAlignement WordWrap 等,仅控制 TextBox 在 UI 中的交互方式,但不影响 Multiline 行为。


m
marsh-wiggle

@Andre Luus, setting 相反,Height="Auto" 不会使 TextBox 伸展。我找到的解决方案是设置 VerticalAlignment="Stretch"


“VerticalAlignment”的默认值“拉伸”refer MSDN。是的,它真的对我有用。它可能取决于您放置文本框的控件,它是非标准的吗?
另一种可能性是您在该 TextBox 范围内的某处定义的文本框的默认样式为 VerticalAlignment 定义了不同的值。我会和史努比核实。
如果容器是固定的,高度自动将不起作用。顶部的每个父容器都必须能够展开。包裹在滚动条中也可以。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅