Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RichTextBox WPF的滚动条_C#_Wpf_Scrollbar_Wpf Controls - Fatal编程技术网

C# RichTextBox WPF的滚动条

C# RichTextBox WPF的滚动条,c#,wpf,scrollbar,wpf-controls,C#,Wpf,Scrollbar,Wpf Controls,我创建了一个固定宽度和高度(A4大小)的RichTextBox。我想在数据超出高度时垂直滚动文本。通过将VerticalScrollBarVisibility属性设置为Hidden,我可以通过鼠标滚轮实现垂直滚动。在这之前,一切正常 如果我将VerticalScrollBarVisibility属性更改为“Visible”,它将显示附加到RichTextBox的垂直滚动条。因为我使用的是RichtextBox的固定宽度,所以滚动条不会出现在窗口的右侧。但是,我希望在窗口的右侧有一个单独的滚动条(

我创建了一个固定宽度和高度(A4大小)的RichTextBox。我想在数据超出高度时垂直滚动文本。通过将VerticalScrollBarVisibility属性设置为Hidden,我可以通过鼠标滚轮实现垂直滚动。在这之前,一切正常

如果我将VerticalScrollBarVisibility属性更改为“Visible”,它将显示附加到RichTextBox的垂直滚动条。因为我使用的是RichtextBox的固定宽度,所以滚动条不会出现在窗口的右侧。但是,我希望在窗口的右侧有一个单独的滚动条(就像每个浏览器一样)。我在窗口中添加了一个单独的垂直滚动条。现在的问题是,如何将Scrollbar事件链接到RichTextBox scrolling

     <Style x:Key="RichTxtStyle"  TargetType="{x:Type RichTextBox}">
        <Setter Property="VerticalScrollBarVisibility" Value="Hidden"/>
        <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
        <Setter Property="AcceptsReturn"  Value="True"/>            
        <Setter Property="Margin" Value="40,0,40,0"/>
        <Setter Property="Padding" Value="50,50,50,50"/>
        <Setter Property="Width" Value="827"/>
        <Setter Property="MinHeight"  Value="1169"/>
        <Setter Property="BorderThickness" Value="0"/>           
    </Style>

这是滚动条对象

 <ScrollBar x:Name="VerticalScroll"   Grid.Row="1" Grid.Column="1" Orientation="Vertical" ValueChanged="VerticalScroll_ValueChanged"/>

下面是我尝试过的事件。这就是我完全迷路的地方

        private void VerticalScroll_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        double offset = e.NewValue;
        RichTxtBx.ScrollToVerticalOffset(offset);
    }
private void VerticalScroll\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
双偏移=e.NewValue;
RichTxtBx.ScrollToVerticalOffset(偏移量);
}

我认为这段代码很有用

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
   <RichTextBox Style="{StaticResource RichTxtStyle}">
               
   </RichTextBox>
</ScrollViewer>

如果我错了,请纠正我,但是@meysam asadi的方法是通过
滚动查看器
包装
RichTextBox
。有时,由于性能下降,这是不需要的。相反,您只需使用:


然后您可以使用“rtbMain”的方法
ScrollToEnd()
ScrollToVerticalOffset(双偏移量)
等等

要捕获ScollChanged事件,请使用如下方式使用ScrollViewer.ScrollChanged=“rtbMain\u ScrollChanged”:


代码隐藏:

使用System.Windows;
使用System.Windows.Controls;
命名空间堆栈VoerFlow_65766040
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有void rtbMain_ScrollChanged(对象发送方,ScrollChangedEventArgs e)
{
}
}
}

如果您还想从代码隐藏中的
RichTextBox
分配
ScrollViewer
的事件,您应该简要查看以下内容:。

谢谢您的帮助。这里的问题如前所述,ScrollViewer出现在richtextbox的右边缘。ReXTrimeBox在窗口中间。窗口的边缘在屏幕的边缘。我不希望滚动条出现在richtextbox的边缘,而是出现在窗口边缘,而不将richtextbox扩展到窗口边缘。感谢您的回复。此方法的问题是RichTextBox正在丢失其height属性。我不知道为什么。另外,我不希望滚动条位于richtextbox的边缘,而是位于窗口的边缘,而不将richtextbox延伸到wondow的边缘。