C#:如何取消选择和取消聚焦文本框

本文关键字:取消 选择 聚焦 文本 何取消 | 更新日期: 2023-09-27 18:32:26

我正在用C# WinForms编写一个简单的基于计算的应用程序。我的问题是我有文本框来显示无法单击/聚焦的结果,因为按钮绑定到键盘。文本框必须具有 ContextMenuStrip,但只能在文本框中处理此操作。此外,此应用程序要求是它不能具有任何可聚焦的控件。类似于Windows的Calc结果框。有什么建议吗?

C#:如何取消选择和取消聚焦文本框

创建自定义文本框:

public class TextBoxWithoutFocus : TextBox
{
    private const int WM_SETFOCUS = 0x7;
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SETFOCUS)
            return;
        base.WndProc(ref m);
    }
}

就这样。文本框永远不会收到焦点(实际上它将获得焦点,但它不会改变其外观)。如果要禁用用户输入,还可以考虑禁止显示WM_CHAR消息 (0x102)。

更新(您可以与按钮一起使用的技巧):

public class ButtonWithoutFocus : Button
{
    public ButtonWithoutFocus()
    {
        SetStyle(ControlStyles.Selectable, false);
    }
}

使其成为标签,而不是文本框。您可以设置尺寸和背景,使其看起来像文本框,并且具有ContextMenuStrip。

尝试TextBox.Enabled = False;TextBox1.ReadOnly = True;

TextBox.Enabled = false满足您的需求吗?

试试这个

TextBox1.ReadOnly = True;

要散焦,只需这样做:

TextBox.Select(0, 0);