タイトル バー (一番上のもの) なしでウィンドウを移動できるコントロールはありますか? フレームはまったくありません。
ご存知のようにメモアプリを作っているのでコンパクトにしたい。
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;
}
}
}
これにより、ウィンドウのクライアント領域がWindowsからキャプションバーのように見えます。
私はそれを行うためのコンポーネントを書きました、あなたはそれをここで見つけることができます。
ウィンドウだけでなく、任意のコントロールを移動するために使用できます。以下に示すように、コードで明示的に使用するか、デザイナーサーフェスにドロップしてEnableDragMove
、ウィンドウまたはコントロールにプロパティを設定することができます。
(出典:thomaslevesque.com)
私があなたに言うことができる前にこのようなことを試みたのは特に簡単ではありません。実行する必要があるのは、OnMouseDown / OnMouseMove / OnMouseUpイベントで、ユーザーがクリックしてドラッグしたときにコントロールの位置を更新するフォーム自体(またはフォーム内のコントロール)に提供されます。私の知る限り、タイトル以外のウィンドウをクリックしてドラッグできる組み込みのコントロールはありません。
アプリケーションをゼロから作成する場合は、WPF を使用して作成することをお勧めします。
Todd Miranda は、windowsclient.net でガジェットのようなアプリケーションを作成する素晴らしいデモを行っています。