我需要显示变长的消息,并允许文本应可选择的。我已经做出的文本只读不允许被编辑的文本,但输入插入仍然是显示。

闪烁的输入插入是令人困惑。我如何隐藏它?

有帮助吗?

解决方案

你可以通过一个win32呼叫

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

其他提示

当使用的win32呼吁不要忘了隐藏的光标在文本的GotFocus事件。

只是为了完整起见,我需要这种功能使用一个 DevExpress它 TextEdit 控制.

他们已经这样做提供了一个 ShowCaret 和一个 HideCaret 方法,不幸的是,他们都受到保护。因此,我创造了一个衍生类,可提供的功能。这里是全代码:

public class MyTextEdit : TextEdit
{
    private bool _wantHideCaret;

    public void DoHideCaret()
    {
        HideCaret();

        _wantHideCaret = true;
    }

    public void DoShowCaret()
    {
        ShowCaret();

        _wantHideCaret = false;
    }

    protected override void OnGotFocus(EventArgs e)
    {
        base.OnGotFocus(e);

        if (_wantHideCaret)
        {
            HideCaret();
        }
    }
}

使用的代码,只需使用的源类,而不是原始的 TextEdit 类代码中的呼叫 DoHideCaret() 任何地方,例如在构造的形式,其中包含的文字编辑控制。

也许这是有用的人的未来。

如果禁止该文箱(设置 Enable=false),案文,它仍然是滚动的和可选择的。如果你不喜欢的视觉介绍禁用文本框(灰色背景,通常)可以手动复盖的颜色。

被警告手动压倒一切的颜色是要让你的形式/控制看起来很怪异的系统上不使用默认的颜色主题设置。不要假设,因为你控制白,每个人的控制将是白色的。这就是为什么你总是应该使用该系统的颜色尽可能(定义 System.Drawing.SystemColors 枚举)这样的 SystemColors.ControlLight.

据我所知,这个 不能 要做。文本框控制是一个有趣的控制,因为它实际上有一个 很多 行为不能被修改,由于它的水龙头进入操作系统。这就是为什么许多很酷的定义的文本框书面从零开始。

我怕你可能不能做你想要做的:(

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top