gpt4 book ai didi

c# - 如何使键盘可滚动只读 WPF 文本框?

转载 作者:行者123 更新时间:2023-11-30 13:55:24 28 4
gpt4 key购买 nike

这看起来很简单:使用 TextBox 显示一些输出并允许用户从中剪切和粘贴、滚动它但不能编辑它。

但是:如果 TextBox 是只读的,那么它会失去大部分键盘行为。您可以单击它并使用不可见的光标选择文本,但它不会滚动或导航。

我有这个(糟糕的)解决方案。

<TextBox Focusable="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
FontFamily="Consolas" FontSize="10pt"
Foreground="{Binding Path=OutputTextColour}"
Text="{Binding Path=OutputText}"
Background="White" PreviewKeyDown="TextBox_PreviewKeyDown" />

还有一个处理程序来丢弃任何编辑尝试:

   private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) {
// the IsReadOnly flag on the control doesn't let the navigation keys work! WPF BUG?
if (!(e.Key == Key.Down || e.Key == Key.Up || e.Key == Key.Left || e.Key == Key.Right
|| e.Key == Key.Home || e.Key == Key.End || e.Key == Key.PageDown || e.Key == Key.PageUp
|| e.Key == Key.Tab || e.Key == Key.Escape))
e.Handled = true;
}

我也曾在 ScrollViewer 中尝试过一个只读的 TextBox,但看起来 TextBox,即使是只读的,仍然会吞下导航击键,而 ScrollView 永远看不到它们。如果 ScrollViewer 获得焦点,则滚动有效,而剪切/复制/粘贴则无效!

是的,我可能可以通过使用 PreviewKeyDown 进行一些花哨的操作来完成所有这些工作,但实际上我只想要一个播放效果不错的 TextBox!

最佳答案

答案是设置

IsReadOnlyCaretVisible="True"

如这里所述:

Readonly textbox for WPF with visible cursor (.NET 3.5)

做工精美!

关于c# - 如何使键盘可滚动只读 WPF 文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com