6

在我的程序中,我使用 WndProc 覆盖来阻止我的表单被调整大小。问题是,当您将指针移动到表单边缘时,光标仍然存在。

有没有办法隐藏这个光标?

4

3 回答 3

8

为什么FormBorderStyle不适当地设置属性呢?那么你也不需要使用WndProc

下面是一些示例代码来演示 - 单击按钮来切换是否可以调整表单的大小:

using System;
using System.Windows.Forms;
using System.Drawing;

class Test
{   
    [STAThread]
    static void Main(string[] args)
    {
        Button button = new Button 
        {
            Text = "Toggle border",
            AutoSize = true,
            Location = new Point(20, 20)
        };
        Form form = new Form
        {
            Size = new Size (200, 200),
            Controls = { button },
            FormBorderStyle = FormBorderStyle.Fixed3D
        };
        button.Click += ToggleBorder;
        Application.Run(form);
    }

    static void ToggleBorder(object sender, EventArgs e)
    {
        Form form = ((Control)sender).FindForm();
        form.FormBorderStyle = form.FormBorderStyle == FormBorderStyle.Fixed3D
            ? FormBorderStyle.Sizable : FormBorderStyle.Fixed3D;
    }
}
于 2009-05-30T18:35:59.500 回答
7

感谢 Lasse 发给我的链接,我找到了使用 WndProc 的方法。感谢您的回复乔恩,但这并不是我想要的。对于那些想知道我是如何做到的人,我使用了这个:

    protected override void WndProc(ref Message m)
    {
        const int WM_NCHITTEST = 0x0084;

        switch (m.Msg)
        {
            case WM_NCHITTEST:
                return;
        }

        base.WndProc(ref m);
    }

我还没有彻底测试它,所以不知道是否有任何副作用,但它目前对我来说很好:)。

于 2009-05-30T19:05:28.223 回答
0

只需设置 FormBorderStyle 就足够了。你为什么要为此使用 WndProc?

于 2009-05-30T19:10:18.617 回答