2010-12-08 5 views
3

要素をMicrosoft WinFormsコントロールに追加できるかどうか教えてください。Microsoft WinFormコントロールに要素を追加する

たとえば、「1」、「2」、「3」などの文字列で簡単に表される、複数のユーザーがそれぞれ独自の「アクセス許可」を持つアプリケーションを持っているとします。アプリケーションには、現在のユーザーの権限レベルに応じて有効/無効にする必要のあるいくつかのボタンがあります。

"ボタン"コントロールに "文字列"を追加することができます。これは、このボタンがどのような権限レベルを示すかを示します。

これは、すべてのボタンをループして現在のユーザーの権限レベルが十分でない場合に無効にすることができるためです。

これは意味があると思います。

ありがとうございました。

+2

IExtenderProviderインターフェイスは、このためのものでした。 –

答えて

4

関連情報への参照を格納するために使用できるWinFormsコントロールには、Tagというプロパティがあります。タイプはobjectなので、何でも保存できます。 (msdn reference)

myButton.Tag = "1"; 

複数のものを保存したい場合は、それ用のクラスを作成しますが:

class UserTag 
{ 
    public string Permission {get;set;} 
    public string Name {get;set;} 
} 

.... 
myButton.Tag = new UserTag { Permission="1", Name="Alice" }; 
.... 
// Use like this: ((UserTag)myButton.Tag).Permission 
+0

それはうまくいくでしょう。ありがとう。私はこれを答えとして数分で追加します。 – Eric

1

は、UIの背後にある論理を維持し、保存するには、適切なソリューションではありません、それはあなたのように物事が難しくなりますプロジェクトが大きくなり、ロジックをデータ構造に格納し、データを使用してUIを互換性があり適切にします。

とにかく問題の解決方法は、IExtenderProviderとHansとMattの答えです。

---- EDIT ----

  //this is just a simple sample! :D 
     Dictionary<string, int[]> CtrlType = new Dictionary<string, int[]>(); 
     CtrlType.Add(button1.Name, new int[] { 2, 3 }); 
     //add another controls status or attributes for user customizing 
     //. 
     //. 
     //. 

     //somewhere in your form UI Customization for users 
     button1.Enabled = CtrlType[button1.Name].Contains(UserID) ? true : false; 
     //handle another controls attributes 
+0

「データ構造」とはどういう意味ですか?私は別のファイル/クラスで自分のロジックを持っています。私はフォームに入り、そこから操作します。私はおそらく正しい方法ではないと知っているので、経験豊富な人からの洞察力やヒントを感謝します。 – Eric

+0

編集済み8moretogo –

関連する問題