4

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

4

6 回答 6

4

创建自定义文本框:

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);
    }
}
于 2012-04-25T22:12:52.583 回答
2

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

于 2012-04-25T21:48:52.377 回答
1

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

于 2012-04-25T21:05:16.983 回答
0

散焦只需这样做:

TextBox.Select(0, 0);
于 2015-01-14T10:22:37.853 回答
0

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

于 2012-04-25T20:57:55.960 回答
0

尝试这个

TextBox1.ReadOnly = True;
于 2012-04-25T20:58:11.810 回答