バージョン

ツールバーとツール グラデーションを整列

ツールバー上でグラディエントを指定すると、ツールバー上の各ツールで背景にグラディエントが描画されます。そこで、水平方向のツールバーで垂直のグラディエント(つまり、上から下へフェードする色)を指定すると、各ツールの垂直グラディエントがツールバー全体にわたって「一直線に並び」、ツールバー全体で 1 つの連続したグラディエントが表示されているように見えます。

ここで、ツールバーをドラッグして左端または右端にドッキングした場合、その結果は予期しないものになります。ツールバー上のツールは上下に配置されるため、各ツールに描画されている個々の垂直グラディエントはツールバーの長さに沿って一直線には並びません。

この問題を解決するには、ツールバーが左端または右端にドッキングされたときにグラディエントを垂直から水平に変更します。これには、UltraToolbarsManager の ToolbarModified イベントで次のコードを使用します。

Visual Basic の場合:

Imports Infragistics.Win
Imports Infragistics.Win.UltraWinToolbars
...
Private Sub UltraToolbarsManager1_ToolbarModified(ByVal sender As Object, _
  ByVal e As Infragistics.Win.UltraWinToolbars.ToolbarModifiedEventArgs) _
  Handles UltraToolbarsManager1.ToolbarModified
	Select Case e.ToolbarChangeType
		Case ToolbarChangeType.Docked
			If e.Toolbar.Key = "Editors" Then
				If e.Toolbar.DockedPosition = DockedPosition.Left Or _
				  e.Toolbar.DockedPosition = DockedPosition.Right Then
					e.Toolbar.Settings.Appearance.BackGradientStyle = GradientStyle.Horizontal
				Else
					e.Toolbar.Settings.Appearance.BackGradientStyle = GradientStyle.Vertical
				End If
			End If
		Case ToolbarChangeType.Undocked
			e.Toolbar.Settings.Appearance.BackGradientStyle = GradientStyle.Vertical
	End Select
End Sub

C# の場合:

using Infragistics.Win;
using Infragistics.Win.UltraWinToolbars;
...
private void ultraToolbarsManager1_ToolbarModified(object sender,
  Infragistics.Win.UltraWinToolbars.ToolbarModifiedEventArgs e)
{
	switch (e.ToolbarChangeType)
	{
		case ToolbarChangeType.Docked:
			if (e.Toolbar.Key == "Editors")
			{
				if (e.Toolbar.DockedPosition == DockedPosition.Left ||
					e.Toolbar.DockedPosition == DockedPosition.Right)
					e.Toolbar.Settings.Appearance.BackGradientStyle = GradientStyle.Horizontal;
				else
					e.Toolbar.Settings.Appearance.BackGradientStyle = GradientStyle.Vertical;
			}
			break;
		case ToolbarChangeType.Undocked:
			e.Toolbar.Settings.Appearance.BackGradientStyle = GradientStyle.Vertical;
			break;
	}
}