カスタムコントロールのデザイン時動作 のバックアップ(No.1)

更新


公開メモ

やりたいこと

カスタムコントロールのデザイン時の動作をカスタマイズしたい。

具体的には、

  • 配列プロパティをコレクションエディタで編集する
  • ComponentDesigner / ControlDesigner を元に独自のデザイン時動作を行う

とりあえず関係ない部分も含めてメモ

後で別のページに動かすかも。

リソースに埋め込んだカーソルを使う方法

http://rararahp.cool.ne.jp/cgi-bin/lng/dotnet/dotnetlng.cgi?print+200212/02120004.txt

外部ファイルの中身を丸ごとリソースに埋め込んでおいて、 実行時に Stream として読み出すことができる。

カーソルを Stream から作成することができる。

この2つを組み合わせて、以下のようにする。

カーソルをリソースに埋め込む

  • カーソルは "MyCursor.cur" と言うファイルに入っている物とする
  • プロジェクトに "MyCursor.cur" を追加する
  • Properties/Resources.resx を開き、ソリューションエクスプローラから "MyCursor.cur" をドロップする
  • できたアイコンは "MyCursor" という名前になるので、分かりやすいように "MyCursor.cur" に直しておく

プログラムから使う

LANG:C#
using System.Reflection;
...

// ResourceName と言う名前のリソースをストリームとして開く
Stream ResourceStream(string ResourceName)
{
  Assembly asm = Assembly.GetExecutingAssembly();
  return asm.GetManifestResourceStream(asm.GetName().Name + "." + ResourceName);
}

// リソースに CursorResourceName と言う名前で埋め込まれた
// カーソルファイルを使ってカーソルを作成する
Cursor LoadCursorFromResource(string CursorResourceName)
{
  return new Cursor(ResourceStream(CursorResourceName));
}
...

Cursor MyCursor= null;
...
if(MyCursor==null)
    MyCursor= LoadCursorFromResource("Cursor.cur");
Cursor.Current= MyCursor;

Counter: 6390 (from 2010/06/03), today: 1, yesterday: 1