このサイズ値はペインを表示するために実際使用されるサイズと必ずしも等しいわけではありません。DisplaySize プロパティは、ペインが現在表示されているサイズを示します。各ペインの実際のサイズは、子ペインの Size プロパティの比率によって決まります。
各ペインについて、2つの異なるサイズ設定を保持する必要があります。これは、1つまたは複数のペインが非表示またはピンで固定されたときにペインのサイズが調整されるためです。たとえば、2つのペインが特定のドッキング領域を占有しており、1番目のペインが使用可能領域のうちの3分の1を占め、2番目のペインが残りの3分の2を占めているとします。2番目のペインが非表示になった場合、1番目の(幅の狭いほうの)ペインが拡大して使用可能領域を占有します。各ペインの元のサイズが何らかの手段によって保存されていなければ、ペインの元の比率を復元できません。
このような問題を解決するため、各ペインのサイズは 2 つの場所に保存されます。Size プロパティには、ペインのサイズと、ドッキング領域における他のペインとの比率が記録されます。プロパティには、ペインのサイズと、ドッキング領域における他のペインとの比率が記録されます。これらの情報はペインが非表示になった場合でも保存され、ペインのサイズが変更されたときだけ変更されます。DisplaySize プロパティは、任意の時点におけるペインの実際のサイズを示します。ペインのサイズが画面上で変更されると、そのたびに DisplaySize の値が変更されます。
Size プロパティによって保持されるペイン サイズは、サイズの比率を決定するために使用されます。ペインの実際のサイズに使用される場合とされない場合があります。上記の例を続けて、ペインが非表示にされた後で、ドッキング領域の幅を半分に変更します。ペインが非表示になると、Size プロパティを使用して元の 1/3 から 2/3 の比率のペインに戻します。ただし、2 つのペインが最初に表示された時に使用された実際の寸法にいずれのペインも戻りません。
Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinDock Private Sub CreateDockManagerPanes(ByVal manager As UltraDockManager) ' this code assumes that there is a treeview (treeview1), ' listview (listview1) and rich textbox (richtext1) on ' the form ' create control panes to contain the listview ' and tree view Dim paneTree As DockableControlPane = New DockableControlPane("tree", "MS Treeview", Me.treeView1) Dim paneList As DockableControlPane = New DockableControlPane() paneList.Key = "list" paneList.Text = "MS Listview" paneList.Control = Me.listView1 ' create a dock area to contain the control panes Dim dockAreaLeft As DockAreaPane = New DockAreaPane(DockedLocation.DockedLeft) ' add the control panes to the dock area dockAreaLeft.Panes.Add(paneTree) dockAreaLeft.Panes.Add(paneList) ' display the panes in a tab group dockAreaLeft.ChildPaneStyle = ChildPaneStyle.TabGroup ' initialize the size of the dock area dockAreaLeft.Size = New Size(200, 200) ' let the tabs autosize to the tab caption dockAreaLeft.GroupSettings.TabSizing = Infragistics.Win.UltraWinTabs.TabSizing.AutoSize ' unpin the panes dockAreaLeft.Unpin() ' now create the control pane to contain the richtext Dim paneText As DockableControlPane = New DockableControlPane("text", "MS RichText", Me.richTextBox1) ' create a dock area on the right to contain the rich text Dim dockAreaFloat As DockAreaPane = New DockAreaPane(DockedLocation.DockedRight) ' initialize the size of the dock area dockAreaFloat.Size = New Size(120, 200) ' contain the rich text pane in the dock area dockAreaFloat.Panes.Add(paneText) ' finally, add the dock areas to the dock manager manager.DockAreas.AddRange( _ New DockAreaPane() {dockAreaLeft, dockAreaFloat}) ' float the rich text dock area but give it a different ' floating size dockAreaFloat.Float(False, New Rectangle(400, 400, 200, 150)) End Sub
using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.UltraWinDock; using System.Diagnostics; private void CreateDockManagerPanes( UltraDockManager manager ) { // this code assumes that there is a treeview (treeview1), // listview (listview1) and rich textbox (richtext1) on // the form // create control panes to contain the listview // and tree view DockableControlPane paneTree = new DockableControlPane("tree", "MS Treeview", this.treeView1); DockableControlPane paneList = new DockableControlPane(); paneList.Key = "list"; paneList.Text = "MS Listview"; paneList.Control = this.listView1; // create a dock area to contain the control panes DockAreaPane dockAreaLeft = new DockAreaPane(DockedLocation.DockedLeft); // add the control panes to the dock area dockAreaLeft.Panes.Add( paneTree ); dockAreaLeft.Panes.Add( paneList ); // display the panes in a tab group dockAreaLeft.ChildPaneStyle = ChildPaneStyle.TabGroup; // initialize the size of the dock area dockAreaLeft.Size = new Size(200, 200); // let the tabs autosize to the tab caption dockAreaLeft.GroupSettings.TabSizing = Infragistics.Win.UltraWinTabs.TabSizing.AutoSize; // unpin the panes dockAreaLeft.Unpin(); // now create the control pane to contain the richtext DockableControlPane paneText = new DockableControlPane("text", "MS RichText", this.richTextBox1); // create a dock area on the right to contain the rich text DockAreaPane dockAreaFloat = new DockAreaPane(DockedLocation.DockedRight); // initialize the size of the dock area dockAreaFloat.Size = new Size(120, 200); // contain the rich text pane in the dock area dockAreaFloat.Panes.Add( paneText ); // finally, add the dock areas to the dock manager manager.DockAreas.AddRange( new DockAreaPane[] { dockAreaLeft, dockAreaFloat } ); // float the rich text dock area but give it a different // floating size dockAreaFloat.Float(false, new Rectangle(400, 400, 200, 150)); }