かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

カスタムコントロールメモ

PropertyGridに新しいTabをつけよう

PropertyGridがデフォで用意してくれる見た目は素敵。 でも、これはSelectedObjectに設定されたオブジェクトのプロパティをそのまま見せてる(Attributeで見せ方をカスタマイズ可能)だけ。 ということで、Tabを1つ追加して自分の世界を作るぞ! Tabを追加…

CollectionEditorまとめ

CollectionEditorのまとめ コレクション内のアイテムのクラスにはInstanceDescriptorへの変換(TypeConverter)を作る コレクションはSystem.Collections.ObjectModel.Collectionを継承して作る コレクション内のアイテムのクラスが複数ある場合はCollectionEd…

CollectionEditorのなぞ

前のコレクションエディタ - かずきのBlog@Hatenaの最後の方で作ってたコレクションエディタに下記のようなことをこそっと書いてた。 internal class GreetCollectionEditor : CollectionEditor { private Type[] supportTypes = new Type[] { typeof(Normal…

コレクションエディタ

さて、ボタンを押したら挨拶してくれる機能を簡単に作れる素敵なコントロールも大きな分岐点っぽいです。 ただたんに挨拶するだけじゃぁつまらない。ってことで、挨拶をいっぱい登録できて10種類の挨拶を登録したら10回ダイアログに挨拶を表示させるよう…

ドロップダウンで選択させたい

HelloControlもそれっぽくなってきたところで、GreetプロパティのNameプロパティをいくつかの名前の候補の中からも選べるようにしたい! 絵にするとこんな感じ StringConverterを継承してこんな感じで実装するみたいだ。 public class GreetNameConverter : …

自作クラスのプロパティ

さて、Greetプロパティは文字列でした。 これを、こんなクラスに変更してみたいと思います。 namespace CustomControlTest { public class GreetMessage { private string name; /// <summary> /// 挨拶をする人の名前 /// </summary> public string Name { get { return name; …

デフォルトのプロパティ

1つ前のエントリでBrowsable(false)にしてしまったGreetプロパティををBrowsable(true)に変更する。 隠したってしゃぁないしね。 さて、このユーザコントロールではGreetプロパティを設定してもらわないと何もはじまらない! そんな重要なプロパティはデフ…

プロパティのカテゴリ/プロパティの非表示

仕事はじまるまで後5分。 とりあえず、一番簡単に試すためにユーザコントロールを作成! ボタンを置いてTextをHelloにしてクリックするとWorldっていうダイアログを表示する。フォームにおいて実行!! 無事でた!!Worldが出るだけじゃつまらないので、Gree…