DoboWiki
Top
> .NETプログラミング研究/67 をテンプレートにして作成
.NETプログラミング研究/67 をテンプレートにして作成
開始行:
#title(.NETプログラミング研究 第67号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第67号 [#a75560e4]
**.NET Tips [#cc475534]
今回も前回に引き続き、ToolStripとToolStripContainerに関す...
**ToolStripやToolStripContainerの外観を変更する [#ac8585b8]
#column(注意){{
この記事の最新版は「[[ToolStripやToolStripContainerの外観...
}}
ToolStripやToolStripContainer(以下まとめてToolStripとす...
***RenderModeプロパティ [#gebb0541]
まずは、VS2005のデザイナを使って、手軽に外観を変更させて...
ToolStripやToolStripContentPanel、ToolStripPanelコントロ...
RenderModeプロパティはデフォルトでManagerRenderModeになっ...
試しに、次のようなコードを実行してみてください。RenderMod...
#code(vbnet){{
ToolStripManager.RenderMode = ToolStripManagerRenderMode....
}}
#code(csharp){{
ToolStripManager.RenderMode = ToolStripManagerRenderMode....
}}
-[[ToolStripManager.RenderMode プロパティ>http://msdn2.mi...
***Rendererプロパティ [#y0918f4b]
もっと細かくToolStripの外観をカスタマイズするには、Render...
ただ、これはあまりに面倒です。そこで、.NET Framework 2.0...
実は、RenderModeプロパティをSystemにするとRendererにToolS...
#code(vbnet){{
ToolStripManager.Renderer = New ToolStripSystemRenderer()
}}
#code(csharp){{
ToolStripManager.Renderer = new ToolStripSystemRenderer();
}}
-[[ToolStripManager.Renderer プロパティ>http://msdn2.micr...
***ProfessionalColorTableクラス [#je98b55d]
ToolStripProfessionalRendererクラスには、ToolStripの外観...
そのためには、ProfessionalColorTableクラスを継承したクラ...
まずは例をご覧ください。はじめにProfessionalColorTableク...
#code(vbnet){{
Public Class CustomProfessionalRenderer
Inherits ProfessionalColorTable
'ToolStripのグラデーションの色を指定
Public Overrides ReadOnly Property ToolStripGradientB...
As Color
Get
Return Color.WhiteSmoke
End Get
End Property
Public Overrides ReadOnly Property ToolStripGradientM...
As Color
Get
Return Color.LightGray
End Get
End Property
Public Overrides ReadOnly Property ToolStripGradientE...
As Color
Get
Return Color.Gray
End Get
End Property
'ToolStripPanelのグラデーションの色を指定
Public Overrides ReadOnly Property ToolStripPanelGrad...
As Color
Get
Return Color.Gold
End Get
End Property
Public Overrides ReadOnly Property ToolStripPanelGrad...
As Color
Get
Return Color.Ivory
End Get
End Property
End Class
}}
#code(csharp){{
using System.Windows.Forms;
using System.Drawing;
public class CustomProfessionalRenderer : ProfessionalCol...
{
//ToolStripのグラデーションの色を指定
public override Color ToolStripGradientBegin
{
get
{
return Color.WhiteSmoke;
}
}
public override Color ToolStripGradientMiddle
{
get
{
return Color.LightGray;
}
}
public override Color ToolStripGradientEnd
{
get
{
return Color.Gray;
}
}
//ToolStripPanelのグラデーションの色を指定
public override Color ToolStripPanelGradientBegin
{
get
{
return Color.Gold;
}
}
public override Color ToolStripPanelGradientEnd
{
get
{
return Color.Ivory;
}
}
}
}}
ToolStripGradientBegin、ToolStripGradientMiddle、ToolStri...
このCustomProfessionalRendererを使って実際にToolStripとTo...
#code(vbnet){{
'アプリケーション全体にカスタムのプロフェッショナルレンダ...
ToolStripManager.Renderer = _
New ToolStripProfessionalRenderer( _
New CustomProfessionalRenderer())
}}
#code(csharp){{
//アプリケーション全体にカスタムのプロフェッショナルレン...
ToolStripManager.Renderer =
new ToolStripProfessionalRenderer(
new CustomProfessionalRenderer());
}}
個々のToolStripやToolStripPanelのみを変更するのであれば、...
なお、Rendererにカスタムレンダラを設定すると、RenderMode...
私がProfessionalColorTableを使ってみて気が付いた点を以下...
ToolStripGradientMiddleを指定しないと、デフォルトの色が使...
グラデーションの方向に関しては、MSDNに何の説明もありませ...
ToolStripGradientBegin、ToolStripGradientMiddle、ToolStri...
ToolStripPanelGradientBegin、ToolStripPanelGradientEndに...
MenuStripのMenuStripGradientBegin、MenuStripGradientEndで...
MenuItemPressedGradientBegin、MenuItemPressedGradientEnd...
OverflowButtonGradientBegin、OverflowButtonGradientEndに...
ToolStripContainerのContentPanelのRendererはグラデーショ...
また、RaftingContainerGradientBeginとRaftingContainerGrad...
-[[ProfessionalColorTable クラス>http://msdn2.microsoft.c...
-[[ProfessionalColors メンバ>http://msdn2.microsoft.com/j...
-[[方法 : ToolStrip アプリケーションの色をカスタマイズす...
-[[方法 : 実行時に ToolStrip レンダラを設定する>http://ms...
***カスタムToolStripRenderer [#o912fe66]
さらに細かくToolStripの外観を指定したい場合は、ToolStripR...
ToolStripRendererクラスは抽象クラスですので、必ず派生クラ...
-[[ToolStripRenderer クラス>http://msdn2.microsoft.com/ja...
もしToolStripSystemRendererやToolStripProfessionalRendere...
以下に、ToolStripProfessionalRendererを継承して、OnRender...
#code(vbnet){{
Public Class CustomRenderer
Inherits ToolStripProfessionalRenderer
'ToolStripの背景を描画
Protected Overrides Sub OnRenderToolStripBackground( _
ByVal e As ToolStripRenderEventArgs)
Dim b As New SolidBrush(Color.LightGray)
e.Graphics.FillRectangle(b, e.AffectedBounds)
b.Dispose()
End Sub
'ToolStripButtonの背景を描画
Protected Overrides Sub OnRenderButtonBackground( _
ByVal e As ToolStripItemRenderEventArgs)
Dim btn As ToolStripButton = CType(e.Item, ToolSt...
Dim b As SolidBrush
If btn.Pressed Or btn.Checked Then
'ボタンが押されている時
b = New SolidBrush(Color.LightSalmon)
Else
If btn.Selected Then
'ボタンが選択されている時
b = New SolidBrush(Color.Aquamarine)
Else
'ボタンが普通の状態の時
b = New SolidBrush(Color.Silver)
End If
End If
'ボタンの背景を描画する
e.Graphics.FillRectangle(b, btn.ContentRectangle)
b.Dispose()
End Sub
End Class
}}
#code(csharp){{
using System.Drawing;
public class CustomRenderer : ToolStripProfessionalRenderer
{
//ToolStripの背景を描画
protected override void OnRenderToolStripBackground(
ToolStripRenderEventArgs e)
{
SolidBrush b = new SolidBrush(Color.LightGray);
e.Graphics.FillRectangle(b, e.AffectedBounds);
b.Dispose();
}
//ToolStripButtonの背景を描画
protected override void OnRenderButtonBackground(
ToolStripItemRenderEventArgs e)
{
ToolStripButton btn = (ToolStripButton)e.Item;
SolidBrush b;
if (btn.Pressed || btn.Checked)
{
//ボタンが押されている時
b = new SolidBrush(Color.LightSalmon);
}
else if (btn.Selected)
{
//ボタンが選択されている時
b = new SolidBrush(Color.Aquamarine);
}
else
{
//ボタンが普通の状態の時
b = new SolidBrush(Color.Silver);
}
//ボタンの背景を描画する
e.Graphics.FillRectangle(b, btn.ContentRectangle);
b.Dispose();
}
}
}}
-[[方法 : プロフェッショナル スタイルの ToolStrip コント...
-[[方法 : カスタムの ToolStripRenderer を実装する>http://...
実はこのようなカスタムのToolStripRendererクラスを作成しな...
#code(vbnet){{
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
Dim proRenderer As New ToolStripProfessionalRenderer()
AddHandler proRenderer.RenderToolStripBackground, _
AddressOf proRenderer_RenderToolStripBackground
ToolStripManager.Renderer = proRenderer
End Sub
Private Sub proRenderer_RenderToolStripBackground( _
ByVal sender As Object, ByVal e As ToolStripRenderEve...
Dim b As New SolidBrush(Color.LightGray)
e.Graphics.FillRectangle(b, e.AffectedBounds)
b.Dispose()
End Sub
}}
#code(csharp){{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
ToolStripProfessionalRenderer proRenderer =
new ToolStripProfessionalRenderer();
proRenderer.RenderToolStripBackground +=
new ToolStripRenderEventHandler(
proRenderer_RenderToolStripBackground);
ToolStripManager.Renderer = proRenderer;
}
private void proRenderer_RenderToolStripBackground(
object sender, ToolStripRenderEventArgs e)
{
SolidBrush b = new SolidBrush(Color.LightGray);
e.Graphics.FillRectangle(b, e.AffectedBounds);
b.Dispose();
}
}}
***ToolStripProfessionalRendererでToolStripの角を四角くす...
ToolStripProfessionalRendererを使うと、デフォルトではTool...
#code(vbnet){{
Dim proRenderer As New ToolStripProfessionalRenderer()
proRenderer.RoundedEdges = False
ToolStripManager.Renderer = proRenderer
}}
#code(csharp){{
ToolStripProfessionalRenderer proRenderer =
new ToolStripProfessionalRenderer();
proRenderer.RoundedEdges = false;
ToolStripManager.Renderer = proRenderer;
}}
***ToolStripのVisualスタイルを無効にする [#t8d0bd40]
ToolStripManager.VisualStylesEnabledメソッドをFalseとする...
今まで紹介してきたように、ProfessionalColorTableクラスや...
#code(vbnet){{
'Visualスタイルを無効にする
ToolStripManager.VisualStylesEnabled = False
}}
#code(csharp){{
//Visualスタイルを無効にする
ToolStripManager.VisualStylesEnabled = false;
}}
しつこいようですが、次回もToolStripに関するTipを紹介する...
**コメント [#i7e6122b]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-03-23 (木) 06:00:00,DOB...
終了行:
#title(.NETプログラミング研究 第67号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第67号 [#a75560e4]
**.NET Tips [#cc475534]
今回も前回に引き続き、ToolStripとToolStripContainerに関す...
**ToolStripやToolStripContainerの外観を変更する [#ac8585b8]
#column(注意){{
この記事の最新版は「[[ToolStripやToolStripContainerの外観...
}}
ToolStripやToolStripContainer(以下まとめてToolStripとす...
***RenderModeプロパティ [#gebb0541]
まずは、VS2005のデザイナを使って、手軽に外観を変更させて...
ToolStripやToolStripContentPanel、ToolStripPanelコントロ...
RenderModeプロパティはデフォルトでManagerRenderModeになっ...
試しに、次のようなコードを実行してみてください。RenderMod...
#code(vbnet){{
ToolStripManager.RenderMode = ToolStripManagerRenderMode....
}}
#code(csharp){{
ToolStripManager.RenderMode = ToolStripManagerRenderMode....
}}
-[[ToolStripManager.RenderMode プロパティ>http://msdn2.mi...
***Rendererプロパティ [#y0918f4b]
もっと細かくToolStripの外観をカスタマイズするには、Render...
ただ、これはあまりに面倒です。そこで、.NET Framework 2.0...
実は、RenderModeプロパティをSystemにするとRendererにToolS...
#code(vbnet){{
ToolStripManager.Renderer = New ToolStripSystemRenderer()
}}
#code(csharp){{
ToolStripManager.Renderer = new ToolStripSystemRenderer();
}}
-[[ToolStripManager.Renderer プロパティ>http://msdn2.micr...
***ProfessionalColorTableクラス [#je98b55d]
ToolStripProfessionalRendererクラスには、ToolStripの外観...
そのためには、ProfessionalColorTableクラスを継承したクラ...
まずは例をご覧ください。はじめにProfessionalColorTableク...
#code(vbnet){{
Public Class CustomProfessionalRenderer
Inherits ProfessionalColorTable
'ToolStripのグラデーションの色を指定
Public Overrides ReadOnly Property ToolStripGradientB...
As Color
Get
Return Color.WhiteSmoke
End Get
End Property
Public Overrides ReadOnly Property ToolStripGradientM...
As Color
Get
Return Color.LightGray
End Get
End Property
Public Overrides ReadOnly Property ToolStripGradientE...
As Color
Get
Return Color.Gray
End Get
End Property
'ToolStripPanelのグラデーションの色を指定
Public Overrides ReadOnly Property ToolStripPanelGrad...
As Color
Get
Return Color.Gold
End Get
End Property
Public Overrides ReadOnly Property ToolStripPanelGrad...
As Color
Get
Return Color.Ivory
End Get
End Property
End Class
}}
#code(csharp){{
using System.Windows.Forms;
using System.Drawing;
public class CustomProfessionalRenderer : ProfessionalCol...
{
//ToolStripのグラデーションの色を指定
public override Color ToolStripGradientBegin
{
get
{
return Color.WhiteSmoke;
}
}
public override Color ToolStripGradientMiddle
{
get
{
return Color.LightGray;
}
}
public override Color ToolStripGradientEnd
{
get
{
return Color.Gray;
}
}
//ToolStripPanelのグラデーションの色を指定
public override Color ToolStripPanelGradientBegin
{
get
{
return Color.Gold;
}
}
public override Color ToolStripPanelGradientEnd
{
get
{
return Color.Ivory;
}
}
}
}}
ToolStripGradientBegin、ToolStripGradientMiddle、ToolStri...
このCustomProfessionalRendererを使って実際にToolStripとTo...
#code(vbnet){{
'アプリケーション全体にカスタムのプロフェッショナルレンダ...
ToolStripManager.Renderer = _
New ToolStripProfessionalRenderer( _
New CustomProfessionalRenderer())
}}
#code(csharp){{
//アプリケーション全体にカスタムのプロフェッショナルレン...
ToolStripManager.Renderer =
new ToolStripProfessionalRenderer(
new CustomProfessionalRenderer());
}}
個々のToolStripやToolStripPanelのみを変更するのであれば、...
なお、Rendererにカスタムレンダラを設定すると、RenderMode...
私がProfessionalColorTableを使ってみて気が付いた点を以下...
ToolStripGradientMiddleを指定しないと、デフォルトの色が使...
グラデーションの方向に関しては、MSDNに何の説明もありませ...
ToolStripGradientBegin、ToolStripGradientMiddle、ToolStri...
ToolStripPanelGradientBegin、ToolStripPanelGradientEndに...
MenuStripのMenuStripGradientBegin、MenuStripGradientEndで...
MenuItemPressedGradientBegin、MenuItemPressedGradientEnd...
OverflowButtonGradientBegin、OverflowButtonGradientEndに...
ToolStripContainerのContentPanelのRendererはグラデーショ...
また、RaftingContainerGradientBeginとRaftingContainerGrad...
-[[ProfessionalColorTable クラス>http://msdn2.microsoft.c...
-[[ProfessionalColors メンバ>http://msdn2.microsoft.com/j...
-[[方法 : ToolStrip アプリケーションの色をカスタマイズす...
-[[方法 : 実行時に ToolStrip レンダラを設定する>http://ms...
***カスタムToolStripRenderer [#o912fe66]
さらに細かくToolStripの外観を指定したい場合は、ToolStripR...
ToolStripRendererクラスは抽象クラスですので、必ず派生クラ...
-[[ToolStripRenderer クラス>http://msdn2.microsoft.com/ja...
もしToolStripSystemRendererやToolStripProfessionalRendere...
以下に、ToolStripProfessionalRendererを継承して、OnRender...
#code(vbnet){{
Public Class CustomRenderer
Inherits ToolStripProfessionalRenderer
'ToolStripの背景を描画
Protected Overrides Sub OnRenderToolStripBackground( _
ByVal e As ToolStripRenderEventArgs)
Dim b As New SolidBrush(Color.LightGray)
e.Graphics.FillRectangle(b, e.AffectedBounds)
b.Dispose()
End Sub
'ToolStripButtonの背景を描画
Protected Overrides Sub OnRenderButtonBackground( _
ByVal e As ToolStripItemRenderEventArgs)
Dim btn As ToolStripButton = CType(e.Item, ToolSt...
Dim b As SolidBrush
If btn.Pressed Or btn.Checked Then
'ボタンが押されている時
b = New SolidBrush(Color.LightSalmon)
Else
If btn.Selected Then
'ボタンが選択されている時
b = New SolidBrush(Color.Aquamarine)
Else
'ボタンが普通の状態の時
b = New SolidBrush(Color.Silver)
End If
End If
'ボタンの背景を描画する
e.Graphics.FillRectangle(b, btn.ContentRectangle)
b.Dispose()
End Sub
End Class
}}
#code(csharp){{
using System.Drawing;
public class CustomRenderer : ToolStripProfessionalRenderer
{
//ToolStripの背景を描画
protected override void OnRenderToolStripBackground(
ToolStripRenderEventArgs e)
{
SolidBrush b = new SolidBrush(Color.LightGray);
e.Graphics.FillRectangle(b, e.AffectedBounds);
b.Dispose();
}
//ToolStripButtonの背景を描画
protected override void OnRenderButtonBackground(
ToolStripItemRenderEventArgs e)
{
ToolStripButton btn = (ToolStripButton)e.Item;
SolidBrush b;
if (btn.Pressed || btn.Checked)
{
//ボタンが押されている時
b = new SolidBrush(Color.LightSalmon);
}
else if (btn.Selected)
{
//ボタンが選択されている時
b = new SolidBrush(Color.Aquamarine);
}
else
{
//ボタンが普通の状態の時
b = new SolidBrush(Color.Silver);
}
//ボタンの背景を描画する
e.Graphics.FillRectangle(b, btn.ContentRectangle);
b.Dispose();
}
}
}}
-[[方法 : プロフェッショナル スタイルの ToolStrip コント...
-[[方法 : カスタムの ToolStripRenderer を実装する>http://...
実はこのようなカスタムのToolStripRendererクラスを作成しな...
#code(vbnet){{
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
Dim proRenderer As New ToolStripProfessionalRenderer()
AddHandler proRenderer.RenderToolStripBackground, _
AddressOf proRenderer_RenderToolStripBackground
ToolStripManager.Renderer = proRenderer
End Sub
Private Sub proRenderer_RenderToolStripBackground( _
ByVal sender As Object, ByVal e As ToolStripRenderEve...
Dim b As New SolidBrush(Color.LightGray)
e.Graphics.FillRectangle(b, e.AffectedBounds)
b.Dispose()
End Sub
}}
#code(csharp){{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
ToolStripProfessionalRenderer proRenderer =
new ToolStripProfessionalRenderer();
proRenderer.RenderToolStripBackground +=
new ToolStripRenderEventHandler(
proRenderer_RenderToolStripBackground);
ToolStripManager.Renderer = proRenderer;
}
private void proRenderer_RenderToolStripBackground(
object sender, ToolStripRenderEventArgs e)
{
SolidBrush b = new SolidBrush(Color.LightGray);
e.Graphics.FillRectangle(b, e.AffectedBounds);
b.Dispose();
}
}}
***ToolStripProfessionalRendererでToolStripの角を四角くす...
ToolStripProfessionalRendererを使うと、デフォルトではTool...
#code(vbnet){{
Dim proRenderer As New ToolStripProfessionalRenderer()
proRenderer.RoundedEdges = False
ToolStripManager.Renderer = proRenderer
}}
#code(csharp){{
ToolStripProfessionalRenderer proRenderer =
new ToolStripProfessionalRenderer();
proRenderer.RoundedEdges = false;
ToolStripManager.Renderer = proRenderer;
}}
***ToolStripのVisualスタイルを無効にする [#t8d0bd40]
ToolStripManager.VisualStylesEnabledメソッドをFalseとする...
今まで紹介してきたように、ProfessionalColorTableクラスや...
#code(vbnet){{
'Visualスタイルを無効にする
ToolStripManager.VisualStylesEnabled = False
}}
#code(csharp){{
//Visualスタイルを無効にする
ToolStripManager.VisualStylesEnabled = false;
}}
しつこいようですが、次回もToolStripに関するTipを紹介する...
**コメント [#i7e6122b]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-03-23 (木) 06:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]