FormBorderStyle=noneの場合にウィンドウの外側にウィンドウの影を表示させたい - C#

FormBorderStyle=none の場合ウィンドウの外側にウィンドウの影が表示されません。しかし、時と場合によってはウィンドウの影を表示させたい場合もあります。
ウィンドウの影を表示させるには、ウィンドウ作成時のCreateParamsのスタイルに CS_DROPSHADOW を含めることで対応できます。
C#ではCreateParamsプロパティをオーバーライドすることでウィンドウ作成時のCreateParamsのパラメータを変更できます。

コード(FormMain.cs)

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;
        cp.ClassStyle |= CS_DROPSHADOW;
        return cp;
      }
    } 

  }
}

実行結果


フォームに影がついていることが確認できます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-07-08
iPentec all rights reserverd.