'宣言 Public ReadOnly Property InstanceProps As InstanceProps
public InstanceProps InstanceProps {get;}
UltraWinToolbars は、ルート ツールとインスタンス ツールという 2 通りの方法でツールを表します。ルートツールはランタイムカスタマイザに表示されるツールで、その用途はツールバーまたはメニューに表示されるツールを作成することです。インスタンスツールはユーザーが実際に操作するツールで、ツールバーまたはメニューに表示されます。インスタンスツールはそれぞれ、ただ1つのルートツールに関連付けられています。ルートツールは自身から派生した複数のインスタンスツールを持つことができます。たとえば、"FileSave" ルート ツールはアプリケーション内に 2 つのインスタンス ツールを持つことができます。1 つは [ファイル] メニューに現れてテキストのみを表示するツールで、もう 1 つは標準ツールバーに現れてイメージのみを表示するツールです。
ルート ツールとインスタンス ツールは機能的には別個のオブジェクトとして取り扱われますが、両者は密接に関係しています。ルートツールに対する変更は、そのルートから派生したすべてのインスタンスツールに影響を与えます。インスタンス ツールに対する変更は、その 1 つのインスタンスのみに影響を与える場合と、ルート ツールおよびルート ツールを通じてそのルートの他のインスタンスに影響を与える場合があります。
ルート ツールとインスタンス ツールには共有されている機能と固有の機能があるため、UltraWinToolbars では各ツールのプロパティの一部が 2 つのオブジェクトの間で分割されています。ルート ツールと、そのツールのすべてのインスタンスに適用されるプロパティは SharedProps オブジェクトが保持します。このオブジェクトにはツールの SharedProps プロパティを通じてアクセスします。その名前が示すように、SharedProps オブジェクトのプロパティはツールのすべてのインスタンスで共有されています。これらのプロパティの 1 つを変更すると、ルート ツールと、そのツールのすべてのインスタンスが影響を受けます。
ツールの 1 つのインスタンスのみに適用されるプロパティは InstanceProps オブジェクトが保持します。このオブジェクトにはツールの InstanceProps プロパティを通じてアクセスします。ルート ツールにも InstanceProps プロパティはありますが、ルート ツールに関連付けられたインスタンス プロパティは存在しないため、このプロパティは null を返します。
これらのプロパティは、"use default" 設定(そのプロパティの値が継承されることを示す)をサポートする一般的なプロパティと共に、継承階層内に存在します。特定のツールインスタンスのプロパティ設定を解決するときは、最初にプロパティのInstanceProps値が適用されます。InstancePropsプロパティが"use default"値に設定されている場合(つまり、そのプロパティのInstanceProps値は存在しない)は、プロパティのSharedProps設定が使用されます。SharedProps オブジェクトのデフォルト値は常に、コントロールで使用できる値を提供します。何らかの理由で SharedProps 値が "use default" に設定されている場合は、ルート ツールに固有の値が使用されます。
ルート ツールとインスタンス ツールの違いに関する詳細については、ヘルプの以下のセクションを参照してください。開発者ガイド > ツールセット > コントロールとコンポーネント > WinToolbarsManager > WinToolbarsManager の詳細。
Imports System.Diagnostics Imports Infragistics.Win Imports Infragistics.Win.UltraWinToolbars Private Sub UltraToolbarsManager1_ToolClick(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinToolbars.ToolClickEventArgs) Handles UltraToolbarsManager1.ToolClick Debug.WriteLine("The Tool with key '" + e.Tool.Key + "' has been clicked. It is of type: '" + e.Tool.GetType().ToString() + "'") ' クリックされたツールのプロパティ情報を表示します Debug.IndentLevel += 1 ' ツールの InstanceProps オブジェクトのすべてのプロパティを表示します Debug.WriteLine("InstanceProps properties ------------------------------------------") If Not e.Tool.InstanceProps Is Nothing Then Debug.WriteLine("Caption: '" + e.Tool.InstanceProps.Caption) Debug.WriteLine("DisplayStyle: '" + e.Tool.InstanceProps.DisplayStyle.ToString()) Debug.WriteLine("MaxWidth: '" + e.Tool.InstanceProps.MaxWidth.ToString()) Debug.WriteLine("MinWidth: '" + e.Tool.InstanceProps.MinWidth.ToString()) Debug.WriteLine("Width: '" + e.Tool.InstanceProps.Width.ToString()) ' InstanceProps.IsFirstInGroup If e.Tool.InstanceProps.IsFirstInGroup Then Debug.WriteLine("Tool has been marked as first in group (i.e., preceded by a tool separator). This setting may have been customized by the end user. Use the tool's IsFirstInGroupResolved property to get its effective setting.") Else Debug.WriteLine("Tool has NOT been marked as first in group (i.e., preceded by a tool separator). This setting may have been customized by the end user. Use the tool's IsFirstInGroupResolved property to get its effective setting.") End If ' InstanceProps.RecentlyUsed If e.Tool.InstanceProps.RecentlyUsed = True Then Debug.WriteLine("Tool will appear when menus are first displayed even if AlwaysShowFullMenus is set to false. This setting may have been customized by the end user. Use the tool's RecentlyUsedResolved property to get its effective setting.") Else Debug.WriteLine("Tool will NOT appear when menus are first displayed if AlwaysShowFullMenus is set to false. This setting may have been customized by the end user. Use the tool's RecentlyUsedResolved property to get its effective setting.") End If ' InstanceProps.Spring If e.Tool.InstanceProps.Spring = DefaultableBoolean.True Then If e.Tool.OwnerIsToolbar And e.Tool.OwningToolbar.SettingsResolved.FillEntireRowResolved = True Then Debug.WriteLine("Tool will adjust its width if there is unused space on its parent toolbar.") Else Debug.WriteLine("Tool will NOT adjust its width since it is not on a toolbar that has its FillEntireRow property set to true.") End If Else Debug.WriteLine("Tool will NOT automatically adjust its width when placed on toolbars with unused space available.") End If ' InstanceProps.Visible If e.Tool.InstanceProps.Visible = DefaultableBoolean.True Then Debug.WriteLine("Tool has been marked as Visible. Use the tool's VisibleResolved property to get its effective setting since the tool may not be visible for other reaosns.") Else Debug.WriteLine("Tool has NOT been marked as Visible.") End If End If Debug.IndentLevel -= 1 End Sub
using System.Diagnostics; using Infragistics.Win; using Infragistics.Win.UltraWinToolbars; private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { Debug.WriteLine("The Tool with key '" + e.Tool.Key + "' has been clicked. It is of type: '" + e.Tool.GetType().ToString() + "'"); // クリックされたツールのプロパティ情報を表示します Debug.IndentLevel++; // ツールの InstanceProps オブジェクトのすべてのプロパティを表示します Debug.WriteLine("InstanceProps properties ------------------------------------------"); if (e.Tool.InstanceProps != null) { Debug.WriteLine("Caption: '" + e.Tool.InstanceProps.Caption); Debug.WriteLine("DisplayStyle: '" + e.Tool.InstanceProps.DisplayStyle.ToString()); Debug.WriteLine("MaxWidth: '" + e.Tool.InstanceProps.MaxWidth.ToString()); Debug.WriteLine("MinWidth: '" + e.Tool.InstanceProps.MinWidth.ToString()); Debug.WriteLine("Width: '" + e.Tool.InstanceProps.Width.ToString()); // InstanceProps.IsFirstInGroup if (e.Tool.InstanceProps.IsFirstInGroup) Debug.WriteLine("Tool has been marked as first in group (i.e., preceded by a tool separator). This setting may have been customized by the end user. Use the tool's IsFirstInGroupResolved property to get its effective setting."); else Debug.WriteLine("Tool has NOT been marked as first in group (i.e., preceded by a tool separator). This setting may have been customized by the end user. Use the tool's IsFirstInGroupResolved property to get its effective setting."); // InstanceProps.RecentlyUsed if (e.Tool.InstanceProps.RecentlyUsed == true) Debug.WriteLine("Tool will appear when menus are first displayed even if AlwaysShowFullMenus is set to false. This setting may have been customized by the end user. Use the tool's RecentlyUsedResolved property to get its effective setting."); else Debug.WriteLine("Tool will NOT appear when menus are first displayed if AlwaysShowFullMenus is set to false. This setting may have been customized by the end user. Use the tool's RecentlyUsedResolved property to get its effective setting."); // InstanceProps.Spring if (e.Tool.InstanceProps.Spring == DefaultableBoolean.True) { if (e.Tool.OwnerIsToolbar && e.Tool.OwningToolbar.SettingsResolved.FillEntireRowResolved == true) Debug.WriteLine("Tool will adjust its width if there is unused space on its parent toolbar."); else Debug.WriteLine("Tool will NOT adjust its width since it is not on a toolbar that has its FillEntireRow property set to true."); } else Debug.WriteLine("Tool will NOT automatically adjust its width when placed on toolbars with unused space available."); // InstanceProps.Visible if (e.Tool.InstanceProps.Visible == DefaultableBoolean.True) Debug.WriteLine("Tool has been marked as Visible. Use the tool's VisibleResolved property to get its effective setting since the tool may not be visible for other reaosns."); else Debug.WriteLine("Tool has NOT been marked as Visible."); } Debug.IndentLevel--; }