C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: カスタムコントロールのプロパティ設定について


(過去ログ 30 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■14081 / inTopicNo.1)  カスタムコントロールのプロパティ設定について
  
□投稿者/ 田中 (1回)-(2008/02/08(Fri) 19:39:24)

分類:[.NET 全般] 

環境:VS2005
OS:Windows XP
言語:C#

こんばんわ。
カスタムコントロールで苦労しております。

テキストボックスを継承しカスタムコントロールを作成しております。
その際にコントロールのVisibleが変更されると、プロパティで設定しておいた
コントロールのVisibleも変更したいのですが、
Visbleの変更したい対象が1つだけではなく複数の設定をしたいのです。


public Control SameVisibleChangeObject
{
    get
    {
        return _VisibleChangeSameObject;
    }
    set
    {
        _VisibleChangeSameObject = value;
    }
}

のように記述しておくと、コンパイルしてフォームに貼り付けた際に、
プロパティを設定しようとするとフォームに配置してあるコントロールの一覧が
リストで表示されるのですが、

public Control[] SameVisibleChangeObject
{
    get
    {
        return _VisibleChangeSameObject;
    }
    set
    {
        _VisibleChangeSameObject = value;
    }
}

のように記述してもControlコレクションエディタが開いてオブジェクトの作成
になってしまいます。
文字列で指定するとかで指定するとかいろいろ他に方法があるとは思いますが、
リストから一覧で選択できたほうが楽ですから、できれば前者と同じような感じで
複数指定したいのですが、方法はないでしょうか。

他にラベルの配列等にもしてみましたが、同じくオブジェクトの作成になってしまいました。

ご存知の方がいらっしゃいましたら、ご教示お願いいたします。


引用返信 編集キー/
■14088 / inTopicNo.2)  Re[1]: カスタムコントロールのプロパティ設定について
□投稿者/ やじゅ (133回)-(2008/02/08(Fri) 20:41:59)
No14081 (田中 さん) に返信
> 環境:VS2005
> OS:Windows XP
> 言語:C#
>
> のように記述してもControlコレクションエディタが開いてオブジェクトの作成
> になってしまいます。
> 文字列で指定するとかで指定するとかいろいろ他に方法があるとは思いますが、
> リストから一覧で選択できたほうが楽ですから、できれば前者と同じような感じで
> 複数指定したいのですが、方法はないでしょうか。
>

コレクションエディタを拡張してみるとかとかとか
http://d.hatena.ne.jp/okazuki/20070209/1170979905
引用返信 編集キー/
■14091 / inTopicNo.3)  Re[2]: カスタムコントロールのプロパティ設定について
□投稿者/ 田中 (2回)-(2008/02/08(Fri) 20:53:33)
No14088 (やじゅ さん) に返信
> ■No14081 (田中 さん) に返信
>>環境:VS2005
>>OS:Windows XP
>>言語:C#
>>
>>のように記述してもControlコレクションエディタが開いてオブジェクトの作成
>>になってしまいます。
>>文字列で指定するとかで指定するとかいろいろ他に方法があるとは思いますが、
>>リストから一覧で選択できたほうが楽ですから、できれば前者と同じような感じで
>>複数指定したいのですが、方法はないでしょうか。
>>
>
> コレクションエディタを拡張してみるとかとかとか
> http://d.hatena.ne.jp/okazuki/20070209/1170979905

お返事ありがとうございます。
連休明けにでも早速試してみたいと思います。
また困ったことがあれば質問しますので、よろしくお願いいたします。
引用返信 編集キー/
■14134 / inTopicNo.4)  Re[3]: カスタムコントロールのプロパティ設定について
□投稿者/ 引っ込んだ(略) (4回)-(2008/02/10(Sun) 01:22:28)
2008/02/12(Tue) 00:42:14 編集(投稿者)
(変更履歴)
  1.クラスMyDataに、override ToString()を追加。
(ここまで変更履歴)

はじめまして、引っ込んだ(略)と申します。
 お答えいたします。

 以下のコードで試してみてください。
 
    public class TextBoxEx : TextBox
    {
        private List<MyData> m_samevisiblechangeobject=new List<MyData>();
 
        // 公開するプロパティ
        [Description("同時にVisibleを切り替えるControl達を指定します。"),Category("拡張")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public List<MyData> SameVisibleChangeObject
        {
            get{return this.m_samevisiblechangeobject;}
        }
        // 動作を確認するためだけの関数
        public void disp()
        {
            foreach (MyData md in this.m_samevisiblechangeobject)
            {
                if (md != null && md.TargetControl != null)
                {
                    Console.WriteLine(md.TargetControl.Name);
                }
                else
                {
                    Console.WriteLine("null Control");
                }
            }
        }
        // コレクションエディタ用に用意したクラス
        [DefaultProperty("TargetControl")]
        public class MyData
        {
            private Control m_control;
            public Control TargetControl
            {
                get { return this.m_control; }
                set { this.m_control = value; }
            }
            // ↓[追記1]このメソッドを追加
            public override string ToString()
            {
                if (this.m_control == null)
                    { return "null Control"; }
                else if (this.m_control.Name != "")
                    { return this.m_control.Name; }
                else
                    { return this.m_control.GetType().Name; }
                //End If
            }
        }

    }

以上です。

引用返信 編集キー/
■14211 / inTopicNo.5)  Re[4]: カスタムコントロールのプロパティ設定について
□投稿者/ 田中 (3回)-(2008/02/13(Wed) 07:50:06)
やじゅ 様
引っ込んだ(略) 様

お世話になっております。田中です。
ありがとうございました。お蔭様で意図した動作になりました。

この方法を使うといろいろとできそうなので他にもちょっと遊んでみたいと思います。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -