c# – 如何使键盘可滚动只读WPF TextBox?
发布时间:2020-12-15 23:30:44 所属栏目:百科 来源:网络整理
导读:这似乎是一件简单的事情:使用TextBox显示一些输出并允许用户从中剪切和粘贴,滚动但不编辑它. 但是:如果TextBox是只读的,那么它会失去大部分键盘行为.您可以单击它并使用不可见光标选择文本,但不会滚动或导航. 我有这个(可怕的)解决方案. TextBox Focusable
这似乎是一件简单的事情:使用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,即使只是readonly,仍然会吞下导航键,而ScrollView永远不会看到它们.如果ScrollViewer获得焦点,那么滚动工作并且剪切/复制/粘贴不会! 是的,我可能通过使用PreviewKeyDown的一些花哨的步法来完成所有工作,但实际上我只是想要一个非常好的TextBox! 解决方法
答案是设定
IsReadOnlyCaretVisible="True" 如下所述: Readonly textbox for WPF with visible cursor (.NET 3.5) 工作得很漂亮! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |