如何将插入符分配给 WPF 中的控件

发布于 2024-07-26 23:13:08 字数 128 浏览 4 评论 0原文

需要创建一个新的 WPF 控件并为其提供插入符号。 在 WINFORMS 或以前的 Windows UI 中,使用 WIN API Caret 函数很容易,但现在在 WPF 中,我们没有每个控件的 hwnd 所以...有没有办法做到这一点?

Need to make a new WPF control and give the Caret to it.
In WINFORMS or previos Windows UI it was easy using the WIN API Caret functions, but now in WPF we don't have hwnd for each control so... is there a way to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小忆控 2024-08-02 23:13:08

在 WPF 中,插入符号实际上是 CaretElement,它是一个内部 FrameworkElement,用于呈现选择块和插入符号。

如果您不继承某种已经提供插入符号支持的控件并尝试操纵它,遗憾的是,您可能需要从头开始实现它。

编辑

CaretElement 是框架内部的,是的,没有记录。

此处提到< /a>,例如。

商业包。

In WPF, the caret is actually CaretElement, an internal FrameworkElement used for rendering selection blocks and the caret.

If you do not inherit from some sort of control which already offers caret support and try to manipulate it, sadly, you could be facing the need to implement it from scratch.

EDIT

The CaretElement is internal to the framework and yes, not documented.

It is mentioned here, for example.

A closed source custom implementation exists in a commercial package.

ㄖ落Θ余辉 2024-08-02 23:13:08

WPF 中的插入符号只是另一种动画,没有专门的 API。 绘制一条线,并使用 DoubleAnimation 更改其不透明度。

如果您仔细观察 WPF TextBox,会发现插入符号甚至不执行“像素反转”,它只是在字母上绘制灰色线。

您可以通过实现像素着色器效果在 WPF 中进行像素反转。 可能不值得。 VS2010 beta 不会对文本插入符号进行反转。

除了 TextBox/RichTextBox 之外,您还可以找到其他 3 个编辑组件:

  • Expression Blend 代码编辑器
  • Visual Studio 2010 代码编辑器
  • SharpDevelop 4 代码编辑器

Caret in WPF is an just another animation, no special API for that. Draw a line, and change its opacity with DoubleAnimation.

If you have closer look at WPF TextBox, the caret doesn't even do 'pixel inversion', it's just gray line drawn over the letter.

Potentially you can do pixel inversion in WPF, by implementing a pixel shader effect. Not worth it probably. VS2010 beta doesn't do inversion for text caret.

Apart from TextBox/RichTextBox there are 3 other editing components you can find:

  • Expression Blend code editor
  • Visual Studio 2010 code editor
  • SharpDevelop 4 code editor
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文