web-dev-qa-db-ja.com

ユーザーコントロール-カスタムプロパティ

Visual Studio(WinForms C#)でユーザーコントロールを開発しましたが、質問があります。

ユーザーコントロールのユーザーが特定の文字列値を変更できるようにする必要があります。ユーザーコントロールをフォームに追加してクリックし、ユーザーコントロールのカスタムプロパティが表示されるプロパティペインを表示できるようにします。表示されます。

ユーザーコントロールに独自のカスタムプロパティを設定するにはどうすればよいですか?例えば:

私のユーザーコントロールにはTextBoxが含まれており、ユーザーがデザインタイムでプロパティの「Text」または「Value」という名前のプロパティを介してそのTextBoxの値を変更できるようにしたいと思います。

69
jay_t55

これは、次のように、プロパティの属性を介して行います。

[Description("Test text displayed in the textbox"),Category("Data")] 
public string Text {
  get { return myInnerTextBox.Text; }
  set { myInnerTextBox.Text = value; }
}

カテゴリは、プロパティが[Visual Studioのプロパティ]ボックスに表示される見出しです。 これは、より完全なMSDNリファレンスです 、カテゴリのリストを含みます。

102
Nick Craver

プロパティを追加するだけで非常に簡単です。

public string Value {
  get { return textBox1.Text; }
  set { textBox1.Text = value; }
}

Textプロパティの使用は少し複雑です。UserControlクラス 意図的に非表示 itです。属性をオーバーライドして、正常な状態に戻す必要があります。

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always), Bindable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text {
  get { return textBox1.Text; }
  set { textBox1.Text = value; }
}
41
Hans Passant

ユーザーコントロールにパブリックプロパティを追加するだけです。

[Category("MyCategory")]および[Description("A property that controls the wossname")]属性を追加して見やすくすることができますが、publicプロパティである限り、プロパティパネルに表示されます。

6
Jason Williams