【问题标题】:How to highlight all repeated text in Notepad using C#?如何使用 C# 在记事本中突出显示所有重复的文本?
【发布时间】:2013-10-09 13:22:50
【问题描述】:

如何通过双击Notepad 中的单词来突出显示所有重复的文本?

当我选择内容中重复的单词时,我希望记事本在突出显示文本时表现得像记事本++。

我熟悉一些pInvoke 的材料和概念。我的 C# 项目处理获取记事本实例、句柄等所需的所有进程。但我不知道如何将颜色发送回记事本编辑控件?

我需要的是您的建议和解决此问题的路线图。我应该涵盖哪个主题才能实现这一目标?

提前致谢。

【问题讨论】:

  • 是什么让你觉得你可以神奇地让记事本做到这一点?
  • 其实记事本只是一个例子,我有另一个应用程序需要应用这个解决方案。如果我在记事本中管理它,我可以在任何地方都可以在我的 c# 应用程序之外进行编辑控制。
  • 我不明白人们是如何反对这个问题的。真的是废话吗?
  • 嗯,首先要问的是:你有理由认为这是可能吗?你以前见过这样做吗?并非一切都是可能的,或者至少:如果可能的话,必须使用大量的黑客攻击来完成,并且会非常脆弱,而且不太可能有一个简单的答案

标签: c# winapi pinvoke


【解决方案1】:

您不能对记事本执行此操作。记事本使用纯编辑控件,不支持彩色文本范围。您需要包装一个丰富的编辑控件来执行此操作(或使用 Notepad++ 所做的 Scintilla 编辑控件)。

【讨论】:

  • 好的,如果我尝试为支持高亮的notepad++做这个,我需要什么?
  • 根据Scintilla Documentation,您将获得窗口句柄并向其发送消息。相关消息类似于 SCI_SETINDICATORCURRENT 和 SCI_SETINDICATORFILLRANGE。
【解决方案2】:

这个来自 MSDN 的页面 here 似乎正是您正在寻找的。​​p>

来自 MSDN: 您可以通过创建 Managed Extensibility Framework (MEF) 组件向编辑器添加不同的视觉效果。本演练演示如何突出显示文本文件中当前单词的每次出现。如果一个单词在文本文件中出现多次,并且您将插入符号定位在一次出现中,则每次出现都会突出显示

这将指导您如何创建一个应用程序,当您突出显示一个单词时,它会以蓝色突出显示所有匹配的单词。

如果您不是在寻找完整的解决方案,那么这个概念就在那里,并且解释得很好。

【讨论】:

  • 他提到了他的 C# 项目并且他想要具有该功能的记事本,我列出的 MSDN 页面基本上允许您打开应用程序,然后使用文本文件(记事本)突出显示任何文本以突出显示所有其他单词。 - 我猜我假设他正在使用 Visual Studio,这是冒昧的。
  • 鉴于它谈到了 pInvoke 和“记事本实例、句柄等”——我真的认为他指的是普通的香草记事本。
  • 好吧,我可能误解了这个问题,如果他说的是没有使用VS的记事本,那么我什至不明白这个问题,我的意思是它甚至可能吗?感谢您的澄清。
  • 正如 Marc 所理解的,我的意思是经典的 notepad.exe,我想突出显示文本。例如,当我在notepad.exe中选择一个单词时,我的应用程序会监听它的所有事件,然后它会在记事本的编辑控件中找到重复的单词并将它们全部突出显示。
  • 这正是我链接的应用程序的作用?
猜你喜欢
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2011-11-10
  • 2011-04-13
  • 2015-08-06
  • 2013-02-17
相关资源
最近更新 更多