バージョン

PositionChildElements メソッド (SpecialCommandMenuItemUIElement)

子要素の配置と作成をオーバーライドします。
シンタックス
'宣言
 
Protected Overrides Sub PositionChildElements() 
protected override void PositionChildElements()
使用例
Imports System.Collections
 Imports Infragistics.Win
		
 Protected Overrides Sub PositionChildElements()

     ' RectInsideBorders は各取得操作で計算されるため、 
     ' RectInsideBorders を複数回呼び出す代わりに、 
     ' 返された矩形をキャッシュすることを推薦します
     Dim workRect As Rectangle = Me.RectInsideBorders


     ' ChildElements コレクションへの参照を保存します
     ' ExtractExistingElement への呼び出しでそのコレクションを使用します
     Dim ChildElements As ArrayList = Me.ChildElements


     ' ChildElements コレクションを null 値に設定します
     Me.childElementsCollection = Nothing


     ' 子要素を作成する方法は 2 つあります
     ' どちらの方法も簡単ですが、 
     ' 使用する方法は
     ' どちらが適切であるかによって決定してください。 

     ' 両方の方法を使用する場合、
     ' 同じタイプで使用できないことに注意して
     ' ください

     ' 最初の方法は TextUIElement タイプの変数を使用します 
     ' フィールドはクラスでプライベートで、
     ' get プロパティによって作成されます常に表示される要素の単一のインスタンスの場合に
     '適切な方法です

     ' このコードで、TextElement のテキストをコントロールの Text プロパティに 
     ' 設定するためにコントロール プロパティを使用します
     Me.TextElement.Text = Control.Text

     Dim textRect As Rectangle = workRect
     textRect.Height -= workRect.Height / 4
     Me.TextElement.Rect = textRect


     ' 2 つ目の方法はフィールドを使用しません代わりに、ChildElements コレクションで 
     ' そのタイプの要素が既に存在するかどうかを確認し、 
     ' 存在する場合に再使用するためにそれを返しますコレクションに存在しない場合、
     ' 要素を作成します常に表示されるわけではない要素の場合、 
     ' 適切な方法です毎回新しい要素を作成する代わりに、 
     ' 要素を再使用してメモリを節約できます

     ' ボタンの UIElement を作成し、位置を設定します
     ' ChildElements を渡しません。代わりに、PositionChildElements への
     ' 以前の呼び出しで生成されたコレクションへの 
     ' 参照を渡します
     Dim buttonElement As ButtonUIElement = GetButtonElement(ChildElements)

     If me.Enabled then 
	buttonElement.Text = "Click Me!"
Else
	buttonElement.Text = "Disabled"
End If


     Dim buttonRect As Rectangle = workRect

     buttonRect.Size = New Size(workRect.Width / 2, workRect.Height / 4)
     buttonRect.Location = New Point(workRect.Left, workRect.Bottom - buttonRect.Height)
     buttonElement.Rect = buttonRect


     ' コントロールが描画されたときに描画されるために
     ' 要素を ChildElements コレクションに追加します
     Me.ChildElements.Add(Me.TextElement)
     Me.ChildElements.Add(buttonElement)

 End Sub

 Private textUIElement As TextUIElement = Nothing

 Public ReadOnly Property TextElement() As Infragistics.Win.TextUIElement

     Get
         If Me.textUIElement Is Nothing Then
             Me.textUIElement = New TextUIElement(Me, String.Empty)
         End If

         Return Me.textUIElement

     End Get

 End Property

 Private Function GetButtonElement(ByVal childElementsCollection As ArrayList) As ButtonUIElement

     ' ChildElements コレクションで使用可能なボタン
     ' UIElement があるかどうかを確認します
     Dim btn As ButtonUIElement = ExtractExistingElement(childElementsCollection, GetType(ButtonUIElement), True)


     ' そうでない場合、新しいボタンのインスタンスを作成します
     If btn Is Nothing Then
         btn = New ButtonUIElement(Me)
     End If

     Return btn

 End Function
using System.Collections;
using Infragistics.Win;

protected override void PositionChildElements()
{

	// RectInsideBorders は各取得操作で計算されるため、 
	// RectInsideBorders を複数回呼び出す代わりに、 
	// 返された矩形をキャッシュすることを推薦します
	Rectangle workRect = this.RectInsideBorders;


	// ChildElements コレクションへの参照を保存します
	// ExtractExistingElement への呼び出しでそのコレクションを使用します
	ArrayList childElements = this.ChildElements;


	// ChildElements コレクションを null 値に設定します
	this.childElementsCollection = null;


	// 子要素を作成する方法は 2 つあります
	// どちらの方法も簡単ですが、 
	// 使用する方法は
	// どちらが適切であるかによって決定してください。両方の方法を使用する場合、
	// 同じタイプで使用できないことに注意して
	// ください

	// 最初の方法は TextUIElement タイプの変数を使用します 
	// フィールドはクラスでプライベートで、
	// get プロパティによって作成されます常に表示される要素の単一のインスタンスの場合に
	// 適切な方法です

	// このコードで、TextElement のテキストをコントロールの Text プロパティに 
	// 設定するためにコントロール プロパティを使用します
	this.TextElement.Text 	 = Control.Text;

	Rectangle textRect 		 = workRect;
	textRect.Height 			-= workRect.Height / 4;
	this.TextElement.Rect 	 = textRect;

		
	// 2 番目の方法はフィールドを使用しません代わりに、ChildElements コレクションで 
	// そのタイプの要素が既に存在するかどうかを確認し、 
	// 存在する場合に再使用するためにそれを返しますコレクションに存在しない場合、
	// 要素を作成します常に表示されるわけではない要素の場合、 
	// これは適切な方法です毎回新しい要素を作成する代わりに、 
	// 要素を再使用してメモリを節約できます

	// ボタンの UIElement を作成し、位置を設定します
	// ChildElements を渡しません。代わりに、PositionChildElements への
	// 以前の呼び出しで生成されたコレクションへの 
	// 参照を渡します
	ButtonUIElement buttonElement = GetButtonElement(childElements);
	
	if(this.Enabled)
		buttonElement.Text = "Click Me!";
	else
		buttonElement.Text = "Disabled";

	Rectangle buttonRect = workRect;
	buttonRect.Size = new Size (workRect.Width / 2, workRect.Height / 4);
	buttonRect.Location = new Point(workRect.Left ,workRect.Bottom - buttonRect.Height);
	buttonElement.Rect = buttonRect;
	

	// コントロールが描画されたときに描画されるために
	// 要素を ChildElements コレクションに追加します
	this.ChildElements.Add(TextElement);
	this.ChildElements.Add(buttonElement);

}

private TextUIElement textUIElement = null;

private TextUIElement TextElement
{

	get
	{

		if(null == this.textUIElement)
			this.textUIElement = new TextUIElement(this,string.Empty );

		return this.textUIElement;

	}

}

private ButtonUIElement GetButtonElement(ArrayList childElementsCollection)
{

	// ChildElements コレクションで使用可能なボタン
	// UIElement があるかどうかを確認します
	ButtonUIElement button = ExtractExistingElement(childElementsCollection, 		typeof(Infragistics.Win.ButtonUIElement),true) as Infragistics.Win.ButtonUIElement ;

	// そうでない場合、新しいボタンをインスタンスを作成します
	if(null == button)
		button = new ButtonUIElement(this);

	return button;

}
参照