C## richTextBox绑定vScrollBar垂直滚动条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C## richTextBox绑定vScrollBar垂直滚动条相关的知识,希望对你有一定的参考价值。

C# winform1 当中有控件richTextBox1,
我想要的效果是:不使用richTextBox1自带的滚动条,绑定vScrollBar垂直滚动条.

参考技术A private void RichTextBox2_ContentsResized(object sender, ContentsResizedEventArgs e)

this.RichTextBox2.Height = e.NewRectangle.Height

void vScrollBar1_Scroll(object sender, ScrollEventArgs e)<br abp="460">

Point p = chatRichTextBox2.Location;
p.Y = 0 - e.NewValue;
RichTextBox2.Location = p;
追问

是根据内容自动变化啊.你这个我测试过没效果.

本回答被提问者和网友采纳

.net 4.5 中可绑定的 WPF Richtextbox

【中文标题】.net 4.5 中可绑定的 WPF Richtextbox【英文标题】:WPF Richtextbox Bindable in .net 4.5 【发布时间】:2016-02-04 17:10:20 【问题描述】:

所以我尝试在我的 .net 4.5 项目中使用David Veeneman's Bindable WPF RichTextBox。在我的代码中添加控件和ValueConverter 后,我注意到只有public object Convert() 会被触发,而public object ConvertBack() 不会。

在阅读了该项目的 cmets 后,我更改了以下部分控件源代码。

private static void OnDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

    var thisControl = (EcoRichTextBox)d;
    if (thisControl.m_InternalUpdatePending > 0)
    
        thisControl.m_InternalUpdatePending--;
        return;
    
    // Changed:
    try
    
        thisControl.TextBox.Document = (e.NewValue == null) ? new FlowDocument() : (FlowDocument)e.NewValue;
    
    catch  
    thisControl.m_TextHasChanged = false;
 

还有这个事件处理程序:

private void OnTextChanged(object sender, TextChangedEventArgs e)

    // Set the TextChanged flag
    m_TextHasChanged = true;

    // Changed:
    Document = TextBox.Document;

现在ValueConverter 的两种方法都可以正常工作,但像private void OnNormalTextClick(object sender, RoutedEventArgs e) 这样的事件会在运行时导致FatalExecutionEngineError

所以我想知道 WPF 3.5 到 4.5 是否有重大变化?

或者有人有解决这个问题的想法吗?


更新

XAML 中的绑定

<uc:FsRichTextBox Margin="5"
    Document="Binding Path=Ereignis.Bericht, 
    Converter=StaticResource flowDocumentConverter, 
    UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True" />

【问题讨论】:

能否请您展示一下您是如何进行绑定的? 您是否安装了 .NET Framework 4.6(即使您的目标是 4.5)?您是在尝试发布还是调试?另外,我无法通过演示和您的更改按框进行复制,您有完整的复制代码吗? @SimonMourier 在我目前的开发机器上安装了 .NET 4.5.1。目标仍为 4.5 【参考方案1】:

我在 VS2015 中使用目标框架 4.0 和 4.5 运行了你 linked here 的演示。当我取出双向数据绑定时,它不会更新。

添加到您的实时出价。两种方式数据绑定和一个名字:

Mode=TwoWay 
x:Name="EditBox" 

我认为与其在此处自行管理文本更改,不如将其删除:

// Changed:
Document = TextBox.Document;

使用事件处理程序更新数据。

然后在管理更新的事件处理程序中(我假设单击按钮?并允许它管理更新。

this.EditBox.UpdateDocumentBindings();

x:name 属性很有价值。

这些都可以在源代码中找到。

如果您可以更清楚地了解您的项目是如何安排的,我可以提供更多详细信息。但对于初学者来说,我会这样做。更贴近提供的示例。

【讨论】:

以上是关于C## richTextBox绑定vScrollBar垂直滚动条的主要内容,如果未能解决你的问题,请参考以下文章

.net 4.5 中可绑定的 WPF Richtextbox

C# WinForm怎么让richTextBox响应回车事件?

WPF问题,richtextbox控件能绑定到数据表中的一个字段吗?怎么做? listbox选中当前项的事件是啥呢?

C#/WPF:禁用 RichTextBox 的文本换行

RichTextBox FlowDocument类型操作

如何更改RichTextBox高度以适应C#中的新字体大小