タイトルバーのないサイズ変更枠だけのウィンドウを作成する - C#
サウンドミキサのフォームのような、枠だけを表示したフォームウィンドウの作成手順を紹介します。
概要
枠だけのウィンドウを作成するには、フォームのプロパティの設定を変更するか、CreateParamsを変更します。
C#ではCreateParamsプロパティをオーバーライドすることでウィンドウ作成時のCreateParamsのパラメータを変更できます。
プログラム例
コード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace App
{
public partial class FormMain : Form
{
const int CS_DROPSHADOW = 0x00020000;
public FormMain()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
//枠だけのフォーム
CreateParams cp = base.CreateParams;
if (this.FormBorderStyle != FormBorderStyle.None) {
cp.Style = cp.Style & (~WS_BORDER);
}
return cp;
}
}
}
}
解説
CreateParamsをオーバーライドしているコードが下記です。オーバーライドのget節で、base.CreateParamsで基底クラスのCreateParamのパラメータ値を取得します。CreateParamsのstyle値から、WS_BORDER を指定しないことでサイズ変更枠だけのウィンドウを作成できます。
protected override CreateParams CreateParams
{
get
{
//枠だけのフォーム
CreateParams cp = base.CreateParams;
if (this.FormBorderStyle != FormBorderStyle.None) {
cp.Style = cp.Style & (~WS_BORDER);
}
return cp;
}
}
実行結果
実行するとサイズ変更枠だけのウィンドウが表示されます。
プロパティの設定で対応する方法
先の例では、CreateParamsをオーバーライドする方法を紹介しましたが、プロパティの設定を変更することで同様のウィンドウを表示できます。
フォームの"ControlBox"プロパティを"False"に設定します。
続いて、フォームのTextプロパティを空にします。
上記2つのプロパティを変更するとフォームのデザイナ画面が以下の外観に変わります。
アプリケーションを実行します。先の例と同じフォームの枠だけのウィンドウが表示できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用