C#隐藏调整光标大小

C#隐藏调整光标大小,c#,user-interface,cursor,C#,User Interface,Cursor,在我的程序中,我使用WndProc覆盖来停止调整窗体的大小。问题是,当您将指针移动到窗体的边缘时,光标仍然存在。是否仍要隐藏此光标?为什么不适当地设置属性?那么您也不需要使用WndProc 下面是一些要演示的示例代码-单击按钮可切换窗体是否可以调整大小: using System; using System.Windows.Forms; using System.Drawing; class Test { [STAThread] static void Main(stri

在我的程序中,我使用WndProc覆盖来停止调整窗体的大小。问题是,当您将指针移动到窗体的边缘时,光标仍然存在。是否仍要隐藏此光标?

为什么不适当地设置属性?那么您也不需要使用
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;
    }
}

多亏了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);
    }

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

仅设置FormBorderStyle就足够了。你为什么要用WndProc来做这个?

@ozy/Lasse 为我工作

有同样的问题:

标准边框样式不能提供我想要的外观,自定义CreateParams可以。我为Size、MinimumSize和MaximumSize指定了相同的值以禁用调整大小。不过,由于Ozzy和Lasse的原因,调整光标的大小仍在设置中,现在可以通过过滤WM_NCHITTEST来处理这一问题


谢谢

我还没有测试过这个,所以我只是在评论,你有没有尝试过截取WM_NCHITTEST消息?这里的更多信息:我把它设置为可调整大小的工具箱,因为在vista中,它周围有一个漂亮的边框。使用fixed 3d,您不会得到边框(我将controlBox设置为false且没有标题),假设您的意思是SizeableToolWindow,您是否尝试过FixedToolWindow?在我看来,它看起来完全一样,只是不可调整大小。只有当它设置为可调整大小时,当controlbox为false且文本为“”时,边框才会显示。当你发布时,我正要回答类似的问题,很高兴你找到了答案。返回后不需要休息。因为在这种情况下,formborderstyle是不够的。