【问题标题】:RichTextBox.Selection property not detected by Visual Studio. Missing using reference?Visual Studio 未检测到 RichTextBox.Selection 属性。缺少使用参考?
【发布时间】:2019-06-27 10:12:26
【问题描述】:

我想使用我的RichTextBox 中的选择属性。我在我的项目中添加了对PresentationFramework.dll 的引用,并在我的代码中添加了对命名空间 System.Windows.Controls 的使用引用。根据 Microsoft 文档,这应该可以工作 (RichTextBox.Selection Property)

但是,Visual Studio 找不到 myRichTextBox.Selection 并给我一个错误。我是否遗漏了一些参考资料或其他什么?

抛出错误的代码是这样的:它是一个接收 RTF 文本并将其加载到 RichTextBox 中的函数

 private void LoadRTF(string RTFtext)
 {
     MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(RTFtext));
     myRichTextBox.Selection.Load(stream, DataFormats.Rtf);
 } //LoadRTF

但这里的问题是 Visual Studio 无法识别 Selection 属性。即使是像

这样的简单行
 TextSelection ts = myRichTextBox.Selection; 

抛出同样的错误

【问题讨论】:

  • 如果新的更改需要清理和构建项目。也许它可以解决它。你的错误到底是什么?
  • 已经尝试清理和构建项目。错误我用西班牙语得到它,它说类似“System.Windows.RichTextBox 不包含“Selection”的定义,并且没有扩展方法“Selection”采用 System.Windows.Forms.RichTextBox 类型的一个参数找到(缺少 using 指令或程序集引用?)”
  • myRichTextBox 是 Windows 窗体中的 RichTextBox 控件。我现在用我正在使用的代码更新问题。
  • 嗯,根据微软的说法,RichTextBox 应该有一个选择属性。我需要该属性才能使用从 MemoryStream 获取 RTF 的 Load 方法。

标签: c# .net wpf winforms


【解决方案1】:

由于您使用的是 Windows 窗体 RichTextBox 控件,因此 Selection 属性不可用。您可以使用SelectedTextSelectedRtf 属性来获取当前的选择内容。

至于要从 MemoryStream 加载内容到控件的部分,可以使用 LoadFile 方法的 LoadFile(Stream, RichTextBoxStreamType) 重载,如下所示:

private void LoadRTF(string RTFtext)
{
    MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(RTFtext));
    myRichTextBox.LoadFile(stream, RichTextBoxStreamType.RichText);
}

最后,如果您真的想在 Winforms 应用程序中使用 WPF RichTextBox 控件,可以使用 ElementHost 控件来实现,如 here 所述。

【讨论】:

  • 试过那个代码,但是在读取保存的 RTF 时它会抛出错误。更准确地说,LoadFile 不会将字符串“tf1ansiansicpg1252deff0deflang3082{onttbl{0nilcharset0 Microsoft Sans Serif;}} viewkind4uc1pard0s17 Este texto esta en negrita0par”识别为富文本
  • 实际上,我想我会发布一个关于这段代码的新问题。毕竟这个问题的问题解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 2016-02-15
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多