SizeGrip コンポーネント
訳あって、こんなコンポーネントを作ってみました。
ソースコードはこれだけ。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Acha_ya.SampleClass
{
/// <summary>
/// SizeGrip です。
/// </summary>
public class SizeGrip : HScrollBar
{
/// <summary>
/// サイズグリップクラスのコンストラクタ
/// </summary>
public SizeGrip()
{
Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
Cursor = Cursors.SizeNWSE; // Windows2000 では設定が必要(?)
if (!GetStyle(ControlStyles.Opaque)) SetStyle(ControlStyles.Opaque, true);
if (!GetStyle(ControlStyles.FixedWidth)) SetStyle(ControlStyles.FixedWidth, true);
if (!GetStyle(ControlStyles.FixedHeight)) SetStyle(ControlStyles.FixedHeight, true);
if (GetStyle(ControlStyles.StandardClick)) SetStyle(ControlStyles.StandardClick, false);
if (GetStyle(ControlStyles.StandardDoubleClick)) SetStyle(ControlStyles.StandardDoubleClick, false);
if (GetStyle(ControlStyles.UserMouse)) SetStyle(ControlStyles.UserMouse, false);
}
/// <summary>
/// コントロールの作成時に必要な情報をサイズグリップ用に変更する。
/// </summary>
protected override CreateParams CreateParams
{
get
{
const int SBS_SIZEGRIP = 0x10;
const int WS_GROUP = 0x20000;
const int WS_EX_NOPARENTNOTIFY = 0x04;
CreateParams cp = base.CreateParams;
cp.Style |= WS_GROUP | SBS_SIZEGRIP;
cp.ExStyle |= WS_EX_NOPARENTNOTIFY;
return cp;
}
}
/// <summary>
/// コントロールの既定のサイズを取得します。
/// </summary>
protected override Size DefaultSize
{
get
{
return new Size(16, 16);
}
}
}
}
実用性はともかく、それなりに遊べます。このコンポーネントを貼り付けると、FormBorderStyle.FixedSingle とか FormBorderStyle.FixedDialog といった本来サイズ変更不可なフォームになっていても、マウスでぐりぐりやって、サイズ変更出来ます。
Form には、SizeGripStyle プロパティがあるし、StatusBar/StatusStrip にも、SizingGrip プロパティがあります。SizeGrip コンポーネントなんて必要なさそうなのに、なぜ作ったのかって?
コモンダイアログに貼り付ける為です。ちょっと(いや非常に)特殊用途ですね。
興味あったら、遊んでみてください。
あっ、VS2005以降だと、通常VisualStyle対応なのでアプリケーション側にあるソースの1行、
Application.EnableVisualStyles();
をコメントにして下さい。VisualStyleオン状態だと、本来サイズ変更不可なフォームに貼り付けたら、サイズ変更出来ません。なぜかは判りませんけど、本来はそうあるべきなので文句は言えません。
FormBorderStyle.Sizable 等元々サイズ変更が可能なフォームなら、VisualStyleオンでも問題ありません。
最後にプロジェクト単位でCABにまとめたファイルをここに置いておきます。
「SizeGrip.cab」をダウンロード
« 命名規則の悩ましさ | トップページ | 構造体/クラスプロパティを展開可能にする(1) »
「.NETコンポーネント」カテゴリの記事
- Flas列挙体用汎用プロパティエディタ(2011.01.03)
- 「アイコンの変更」ダイアログを使ってみる。(2010.12.05)
- SizeGrip コンポーネント(2010.10.02)
この記事へのコメントは終了しました。
コメント