如何使没有标题栏的窗口移动

时间:2009-08-22 19:01:32

标签: c# move title

是否有任何控件可以移动窗口而没有标题栏(顶部)/完全没有框架。

我正在制作一个注释应用程序,因此我希望它是紧凑的。

4 个答案:

答案 0 :(得分:4)

您需要从WndProc中的WM_NCHITTEST返回HTCAPTION:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    const int WM_NCHITTEST = 0x0084;
    const int HTCLIENT = 1;
    const int HTCAPTION = 2;
    protected override void WndProc(ref Message msg)
    {
        base.WndProc(ref msg);
        if (msg.Msg == WM_NCHITTEST && msg.Result == (IntPtr)HTCLIENT)
        {
            msg.Result = (IntPtr)HTCAPTION;
        }
    }
}

这会使窗口的客户区看起来像是一个标题栏。

答案 1 :(得分:3)

我写了一个组件来做到这一点,你可以找到它here

它可用于移动任何控件,而不仅仅是窗口。您可以在代码中显式使用它,也可以将其放在设计器表面上,并在窗口或控件上设置EnableDragMove属性,如下所示:

Screenshot

答案 2 :(得分:0)

在我告诉你它之前尝试过这样的事情并不是特别容易。您需要做的是OnMouseDown / OnMouseMove / OnMouseUp事件提供给表单本身(或表单中的某个控件),当用户单击并拖动时更新控件的位置。据我所知,没有内置控件可以让你点击并拖动标题以外的窗口。

答案 3 :(得分:0)

如果您要从头开始构建应用程序,我建议您使用WPF创建它。

Todd Miranda有很好的演示,可以在windowsclient.net上创建类似应用程序的小工具。

演示链接:http://windowsclient.net/learn/video.aspx?v=5177