フォームのタイトルバーの最小化ボタンの左側に追加のボタンがあるアプリ(.NETアプリではないかもしれません)を見たことがありますか? C#でこれを実現するにはどうすればよいですか?
これを行う方法は、WM_NCPAINTメッセージ(非クライアントペイント)を処理してボタンを描画し、クライアント以外のマウスクリックを処理して誰かが「ボタン」をクリックしたことを知ることだと思います。
簡単なソリューション:
ステップ1:Windowsフォームを作成します(これがカスタムタイトルバーになります)
-Set Form Border Style to None
-Add whatever controls you would like to this
-I will name this custom form "TitleBarButtons"
ステップ2.追加でこのカスタムコントロールを使用するfrom
titleBarBtn = new TitleBarButtons();
titleBarBtn.Location = new Point(this.Location.X + 100, this.Location.Y+5);
titleBarBtn.Show();
titleBarBtn.Owner = this;
あなたのコンストラクタに...あなたはこれが私のアプリの素敵な位置にちょうど収まるオフセットを台無しにすることができます
ステップ3.移動イベントをメインフォームに追加する
private void Form14_Move(object sender, EventArgs e)
{
titleBarBtn.Location = new Point(this.Location.X + 100, this.Location.Y+5);
}
上記のコードのより良い説明が必要な場合はお知らせください。