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

时间:2012-04-25 20:55:22

标签: c# winforms textbox focus

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

6 个答案:

答案 0 :(得分:3)

创建自定义文本框:

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);
    }
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

试试这个

TextBox1.ReadOnly = True;

答案 5 :(得分:0)

离焦只需这样做:

TextBox.Select(0, 0);