如何在System.Windows.Forms.TextBox中隐藏输入插入符号?

时间:2020-03-05 18:47:43  来源:igfitidea点击:

我需要显示一个可变长度的消息,并允许文本是可选的。我已将TextBox设置为ReadOnly,它不允许编辑文本,但仍显示输入的插入符号。

闪烁的输入插入符号令人困惑。我怎么藏起来?

解决方案

回答

如果禁用了文本框(设置为" Enable = false"),则其中的文本仍可滚动且可以选择。如果我们不喜欢禁用文本框(通常是灰色背景)的视觉效果,则可以手动覆盖颜色。

请注意,在不使用默认颜色/主题设置的系统上,手动覆盖颜色会使表单/控件看起来很奇怪。不要以为因为控件是白色的,所以每个人的控件都将是白色的。这就是为什么我们应该始终尽可能使用系统颜色(在" System.Drawing.SystemColors"枚举中定义),例如" SystemColors.ControlLight"的原因。

回答

AFAIK,此操作无法完成。 TextBox控件是一个有趣的控件,因为它实际上有很多行为,由于它采用了操作系统的方式,因此无法修改。这就是为什么许多很酷的自定义TextBox是从头开始编写的原因。

恐怕我们可能无法做我们想做的事情:(

回答

我们可以通过win32调用来完成

[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
public void HideCaret()
{
    HideCaret(someTextBox.Handle);
}

回答

使用win32调用时,不要忘记将光标隐藏在文本框的GotFocus事件中。