【发布时间】:2009-05-21 17:50:44
【问题描述】:
我正在重写一个 Windows 窗体应用程序(更新框架、重写逻辑等),但有一件事我无法弄清楚它们是如何做到的。 原始应用程序中的文本框有一个粗大的闪烁光标,如下所示:http://screencast.com/t/8QYUcjuh3n
对于我的一生,我无法弄清楚如何做到这一点。请帮忙?
【问题讨论】:
我正在重写一个 Windows 窗体应用程序(更新框架、重写逻辑等),但有一件事我无法弄清楚它们是如何做到的。 原始应用程序中的文本框有一个粗大的闪烁光标,如下所示:http://screencast.com/t/8QYUcjuh3n
对于我的一生,我无法弄清楚如何做到这一点。请帮忙?
【问题讨论】:
您可以使用 pinvoke CreateCaret 完成此操作
该示例使用带有按钮 (button1) 和文本框 (textBox1) 的 Winform。
使用指令添加这个:
using System.Runtime.InteropServices;
添加这些声明:
[DllImport("user32.dll")]
static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight);
[DllImport("user32.dll")]
static extern bool ShowCaret(IntPtr hWnd);
将此代码添加到按钮单击事件中:
// Thickness is set where I have 10.
CreateCaret(textBox1.Handle, IntPtr.Zero, 10, textBox1.Height);
ShowCaret(textBox1.Handle);
单击按钮时,光标会变粗。
还有一个关于这个here的讨论。
【讨论】: