プロパティは、フィールドに似ていますが、アクセサ メソッドを持つという点でフィールドとは異なります。プロパティは、データの隠ぺいやバージョン管理が可能で、Visual Studio .NET などのビジュアル デザイナによってサポートされるため、パブリック フィールドではなく、コントロールから公開する必要があります。アクセサは、プロパティを設定したり取得したりするだけではなく、追加のプログラム ロジックを実行できます。プロパティについて知識が必要な場合は、「プロパティの概要」を参照してください。
Control から継承されるプロパティ
コントロールが Control クラスから継承するプロパティの完全な一覧については、「Control クラス」を参照してください。一般的にアクセスされるプロパティのいくつかを次に示します。
- Controls – コントロールの子コントロールのコレクション。
- ID – ユーザー指定のコントロール識別子。
- Page – コントロールを含めるページ。
- Parent - コントロールが属する Controls コレクションを持つコントロール。コントロール B がコントロール A の要素である場合、A は B の親です。
- ViewState - クライアントとの間で送受信されるデータ構造体です。通常、ラウンド トリップの間にフォーム データを永続化するために使用されます。ViewState は、データを名前と値のペアで格納するディクショナリである StateBag 型です。
- EnableViewState – コントロールがラウンド トリップの間にそのビューステートを維持するかどうかを指示します。親コントロールがそのビューステートを維持しない場合は、その子コントロールのビューステートも自動的に維持されなくなります。
- UniqueID – ASP.NET ページ フレームワークによってコントロールに割り当てられる、階層構造内で固有の ID。
- ClientID - ASP.NET ページ フレームワークによってコントロールに割り当てられる固有の ID であり、クライアントでは HTML ID 属性として表示されます。ClientID は、Unique ID とは異なります。CLientID にはコロン (:) を含めることができます。コロンは、HTML ID 属性では無効であり、クライアント側スクリプトの変数名では使用できません。
- Visible – コントロールをページに表示するかどうかを決定します。
WebControl から継承されるプロパティ
WebControl からコントロールを派生させた場合、そのコントロールは、ビジュアル表示に関係する追加のプロパティを継承します。WebControl から継承されるプロパティの完全な一覧については、「WebControl クラス」を参照してください。一般的にアクセスされる WebControl のプロパティのいくつかを次に示します。
- Font – コントロールのフォント。
- ForeColor – コントロールの前景色。
- BackColor – コントロールの背景色。
- Height – コントロールの高さ。
- Width – コントロールの幅。
- Attributes – クライアントで属性として表示される名前と値のペアのコレクション。Attributes プロパティには、宣言によって設定される属性 (コントロールのプロパティ (またはイベント) に対応しない属性) とプログラムで設定される属性の和集合が含まれます。
また、WebControl は、いくつかの追加のカスケード スタイル シート (CSS) スタイルを厳密型指定のプロパティとして公開します。
継承したプロパティのカスタマイズ
コントロールは、継承したプロパティをオーバライドすることにより、プロパティをカスタマイズできます。プロパティをオーバーライドするには、そのプロパティのアクセサをオーバーライドします。Button からコントロールを派生させ、背景色を常に緑色で表示するように BackColor プロパティをオーバーライドする例を次に示します。
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace CustomControls
{
public class DerivedButton : Button
{
public DerivedButton() : base()
{
base.BackColor = Color.Green;
}
public override Color BackColor
{
get
{
return base.BackColor;
}
set
{
// Do nothing.
}
}
}
}
[Visual Basic]
Option Explicit
Option Strict
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Drawing
Namespace CustomControls
Public Class DerivedButton
Inherits Button
Public Sub New()
MyBase.BackColor = Color.Green
End Sub
Public Overrides Property BackColor() As Color
Get
Return MyBase.BackColor
End Get
Set
' Do nothing.
End Set
End Property
End Class
End Namespace
属性をオーバーライドする (または提供する) ことにより、プロパティのメタデータを変更することもできます。BrowsableAttribute を false に変更して、Visual Studio .NET などのデザイナのプロパティ ブラウザで BackColor プロパティを非表示にするコードを次に示します。
[Browsable(false)]
public override Color BackColor{...}
[Visual Basic]
<Browsable(False)> _
Public Overrides Property BackColor() As Color
...
End Property