2011-12-04 5 views
1

私はこのようなコンポーネントがあります。だから、デザイン時にListプロパティを埋め込む方法は?

public partial class FontScalingManager : Component 
{ 
    ...other stuff... 

    /// <summary> 
    /// List of Controls, which get their Font scaled 
    /// </summary> 
    [ListBindable(BindableSupport.Yes), 
    Description("List of Controls, which get their Font scaled")] 
    public List<Control> ScalingControls 
    { 
     get { return _scalingControls; } 
    } 
} 

は、フォーム上でこのコンポーネントを落とした後、私はデザイナーで、このリストを記入します。私は、UITypeEditorなどを使用してデザイナーで手動で行うことを好みます。これは、フォームのコントロールの一部を選択することによって行います。

デザイナーが自動的にこのリストに新しいコントロールを追加するエディタを自動的に提供します。そのため、既存のすべてのコントロールから選択したいのですがどうすればいいですか?

エディタに何かを設定することはできますか、カスタムエディタが必要ですか?

すべての援助をいただきありがとうございます。

+0

Thomas6767:あなたはようこそ。また、StackOverflowを初めて使用したので、Answerの隣にあるチェックマークをチェックすることで、最も役立った回答を受け入れることができることをお知らせしたいと思います。 –

答えて

2

これを行うためにIExtenderProviderインターフェイスが作成されました。 .NET HelpProviderコンポーネントはそのように実装されました。同じフォーム上の他のコントロールにプロパティを追加する方法に注意してください。 MSDNライブラリの記事でthe exampleを使用すると、正しく実装する方法に関する基本的なガイダンスが得られます。

+0

お探しの情報がわからない場合は、この情報を見つけるのがとても難しいです。一度試してみると、この回答はオフになります。 – Thomas

+0

もう一度、ありがとうございます、私は例を理解した後、魅力のように動作します。 – Thomas

+0

トーマス、次回はあなたの解決策を共有しています....他人のために、自分自身を守らないでください – Tommix

0

コントロールには、Tagというプロパティがあります。スケーリングコントロールのタグを「スケーリング」に設定します。最初にアクセスするときのスケーリングコントロールを決定します。

private List<Control> _scalingControls; 
public List<Control> ScalingControls 
{ 
    get 
    { 
     if (_scalingControls == null) { 
      _scalingControls = new List<Control>(); 
      foreach (Control c in frm.Controls) { 
       if ((string)c.Tag == "scaling") { 
        _scalingControls.Add(c); 
       } 
      } 
     } 
     return _scalingControls; 
    } 
} 
+0

ありがとう、タグは考えていませんでしたが、似たようなものです。プロ:2分でこれを実装することができます。短所:すべてのコントロールを再帰的に検索しますが、その30%は必要です 長期的には、 – Thomas

関連する問題