是否有任何控件可以移动窗口而没有标题栏(顶部)/完全没有框架。
我正在制作一个注释应用程序,因此我希望它是紧凑的。
答案 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
属性,如下所示:
答案 2 :(得分:0)
在我告诉你它之前尝试过这样的事情并不是特别容易。您需要做的是OnMouseDown / OnMouseMove / OnMouseUp事件提供给表单本身(或表单中的某个控件),当用户单击并拖动时更新控件的位置。据我所知,没有内置控件可以让你点击并拖动标题以外的窗口。
答案 3 :(得分:0)
如果您要从头开始构建应用程序,我建议您使用WPF创建它。
Todd Miranda有很好的演示,可以在windowsclient.net上创建类似应用程序的小工具。