ToolStripItem クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文
Public MustInherit Class ToolStripItem Inherits Component Implements IDropTarget, IComponent, IDisposable
public abstract class ToolStripItem extends Component implements IDropTarget, IComponent, IDisposable
ToolStripItem は、ボタン、コンボ ボックス、テキスト ボックス、またはラベルなどの要素であり、ToolStrip コントロールまたは ToolStripDropDown コントロール内に格納できます。これは、Windows のコンテキスト メニューに似ています。ToolStrip クラスは、これらの要素への、ドラッグ アンド ドロップ入力などの描画、キーボード、およびマウスの各入力を管理し、ToolStripItem クラスはイベントおよびレイアウトを管理します。
ToolStripItem クラスから派生し、ToolStrip または ToolStripDropDown でホストできる要素を次の表に示します。
ToolStripButton | |
ToolStripLabel | |
ToolStripSeparator | |
ToolStripControlHost | ToolStripComboBox、ToolStripTextBox、ToolStripProgressBar などの Windows フォーム コントロール、またはカスタム コントロールをホストする ToolStripItem。 ToolStripComboBox は、ユーザーがテキストを入力できるテキスト ボックスで、テキスト ボックスに入力するテキストを選択できる一覧も表示されます。 ToolStripTextBox を使用すると、ユーザーはテキストを入力できます。 StatusStrip に含まれる Windows プログレス バー コントロールを表す ToolStripProgressBar。 |
ToolStripDropDownItem | ToolStripMenuItem、ToolStripSplitButton、および ToolStripDropDownButton をホストする ToolStripItem。 ToolStripMenuItem は、メニューまたはコンテキスト メニューに表示される選択可能なオプションです。 |
ToolStripStatusLabel |
カスタム ToolStripItem コントロールの実装方法を次のコード例に示します。
Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms ' This class implements a ToolStripItem that highlights ' its border and text when the mouse enters enters its ' client rectangle. It has a clickable state which is ' exposed through the Clicked property and displayed ' by highlighting or graying out the item's image. Public Class RolloverItem Inherits ToolStripItem Private clickedValue As Boolean = False Private rolloverValue As Boolean = False Private imageRect As Rectangle Private textRect As Rectangle ' For brevity, this implementation limits the possible ' TextDirection values to ToolStripTextDirection.Horizontal. Public Overrides Property TextDirection() As ToolStripTextDirection Get Return MyBase.TextDirection End Get Set If value = ToolStripTextDirection.Horizontal Then MyBase.TextDirection = value Else Throw New ArgumentException( _ "RolloverItem supports only horizontal text.") End If End Set End Property ' For brevity, this implementation limits the possible ' TextImageRelation values to ImageBeforeText and TextBeforeImage. Public Shadows Property TextImageRelation() As TextImageRelation Get Return MyBase.TextImageRelation End Get Set If Value = TextImageRelation.ImageBeforeText OrElse _ Value = TextImageRelation.TextBeforeImage Then MyBase.TextImageRelation = Value Else Throw New ArgumentException("Unsupported TextImageRelation value.") End If End Set End Property ' This property returns true if the mouse is ' inside the client rectangle. Public ReadOnly Property Rollover() As Boolean Get Return Me.rolloverValue End Get End Property ' This property returns true if the item ' has been toggled into the clicked state. ' Clicking again toggles it to the ' unclicked state. Public ReadOnly Property Clicked() As Boolean Get Return Me.clickedValue End Get End Property ' The method defines the behavior of the Click event. ' It simply toggles the state of the clickedValue field. Protected Overrides Sub OnClick(e As EventArgs) MyBase.OnClick(e) Me.clickedValue ^= True End Sub ' The method defines the behavior of the DoubleClick ' event. It shows a MessageBox with the item's text. Protected Overrides Sub OnDoubleClick(e As EventArgs) MyBase.OnDoubleClick(e) Dim msg As String = String.Format("Item: {0}", Me.Text) MessageBox.Show(msg) End Sub ' This method defines the behavior of the MouseEnter event. ' It sets the state of the rolloverValue field to true and ' tells the control to repaint. Protected Overrides Sub OnMouseEnter(e As EventArgs) MyBase.OnMouseEnter(e) Me.rolloverValue = True Me.Invalidate() End Sub ' This method defines the behavior of the MouseLeave event. ' It sets the state of the rolloverValue field to false and ' tells the control to repaint. Protected Overrides Sub OnMouseLeave(e As EventArgs) MyBase.OnMouseLeave(e) Me.rolloverValue = False Me.Invalidate() End Sub ' This method defines the painting behavior of the control. ' It performs the following operations: ' ' Computes the layout of the item's image and text. ' Draws the item's background image. ' Draws the item's image. ' Draws the item's text. ' ' Drawing operations are implemented in the ' RolloverItemRenderer class. Protected Overrides Sub OnPaint(e As PaintEventArgs) MyBase.OnPaint(e) If Not (Me.Owner Is Nothing) Then ' Find the dimensions of the image and the text ' areas of the item. Me.ComputeImageAndTextLayout() ' Draw the background. This includes drawing a highlighted ' border when the mouse is in the client area. Dim ea As New ToolStripItemRenderEventArgs(e.Graphics, Me) Me.Owner.Renderer.DrawItemBackground(ea) ' Draw the item's image. Dim irea As New ToolStripItemImageRenderEventArgs(e.Graphics, Me, imageRect) Me.Owner.Renderer.DrawItemImage(irea) ' If the item is on a drop-down, give its ' text a different highlighted color. Dim highlightColor As Color = IIf(Me.IsOnDropDown, Color.Salmon, SystemColors.ControlLightLight) ' Draw the text, and highlight it if the ' the rollover state is true. Dim rea As New ToolStripItemTextRenderEventArgs(e.Graphics, Me, MyBase.Text, textRect, IIf(Me.rolloverValue, highlightColor, MyBase.ForeColor), MyBase.Font, MyBase.TextAlign) Me.Owner.Renderer.DrawItemText(rea) End If End Sub ' This utility method computes the layout of the ' RolloverItem control's image area and the text area. ' For brevity, only the following settings are ' supported: ' ' ToolStripTextDirection.Horizontal ' TextImageRelation.ImageBeforeText ' TextImageRelation.ImageBeforeText ' ' It would not be difficult to support vertical text ' directions and other image/text relationships. Private Sub ComputeImageAndTextLayout() Dim cr As Rectangle = MyBase.ContentRectangle Dim img As Image = MyBase.Owner.ImageList.Images(MyBase.ImageKey) ' Compute the center of the item's ContentRectangle. Dim centerY As Integer = (cr.Height - img.Height) / 2 ' Find the dimensions of the image and the text ' areas of the item. The text occupies the space ' not filled by the image. If MyBase.TextImageRelation = _ TextImageRelation.ImageBeforeText AndAlso _ MyBase.TextDirection = ToolStripTextDirection.Horizontal Then imageRect = New Rectangle( _ MyBase.ContentRectangle.Left, _ centerY, _ MyBase.Image.Width, _ MyBase.Image.Height) textRect = New Rectangle( _ imageRect.Width, _ MyBase.ContentRectangle.Top, _ MyBase.ContentRectangle.Width - imageRect.Width, _ MyBase.ContentRectangle.Height) ElseIf MyBase.TextImageRelation = _ TextImageRelation.TextBeforeImage AndAlso _ MyBase.TextDirection = ToolStripTextDirection.Horizontal Then imageRect = New Rectangle( _ MyBase.ContentRectangle.Right - MyBase.Image.Width, _ centerY, _ MyBase.Image.Width, _ MyBase.Image.Height) textRect = New Rectangle( _ MyBase.ContentRectangle.Left, _ MyBase.ContentRectangle.Top, _ imageRect.X, _ MyBase.ContentRectangle.Bottom) End If End Sub End Class ' This is the custom renderer for the RolloverItem control. ' It draws a border around the item when the mouse is ' in the item's client area. It also draws the item's image ' in an inactive state (grayed out) until the user clicks ' the item to toggle its "clicked" state. Friend Class RolloverItemRenderer Inherits ToolStripSystemRenderer Protected Overrides Sub OnRenderItemImage(ByVal e As ToolStripItemImageRenderEventArgs) MyBase.OnRenderItemImage(e) Dim item As RolloverItem = e.Item ' If the ToolSTripItem is of type RolloverItem, ' perform custom rendering for the image. If Not (item Is Nothing) Then If item.Clicked Then ' The item is in the clicked state, so ' draw the image as usual. e.Graphics.DrawImage(e.Image, e.ImageRectangle.X, e.ImageRectangle.Y) Else ' In the unclicked state, gray out the image. ControlPaint.DrawImageDisabled(e.Graphics, e.Image, e.ImageRectangle.X, e.ImageRectangle.Y, item.BackColor) End If End If End Sub ' This method defines the behavior for rendering the ' background of a ToolStripItem. If the item is a ' RolloverItem, it paints the item's BackgroundImage ' centered in the client area. If the mouse is in the ' item's client area, a border is drawn around it. ' If the item is on a drop-down or if it is on the ' overflow, a gradient is painted in the background. Protected Overrides Sub OnRenderItemBackground(ByVal e As ToolStripItemRenderEventArgs) MyBase.OnRenderItemBackground(e) Dim item As RolloverItem = e.Item ' If the ToolSTripItem is of type RolloverItem, ' perform custom rendering for the background. If Not (item Is Nothing) Then If item.Placement = ToolStripItemPlacement.Overflow OrElse item.IsOnDropDown Then Dim b As New LinearGradientBrush(item.ContentRectangle, Color.Salmon, Color.DarkRed, 0.0F, False) Try e.Graphics.FillRectangle(b, item.ContentRectangle) Finally b.Dispose() End Try End If ' The RolloverItem control only supports ' the ImageLayout.Center setting for the ' BackgroundImage property. If item.BackgroundImageLayout = ImageLayout.Center Then ' Get references to the item's ContentRectangle ' and BackgroundImage, for convenience. Dim cr As Rectangle = item.ContentRectangle Dim bgi As Image = item.BackgroundImage ' Compute the center of the item's ContentRectangle. Dim centerX As Integer = (cr.Width - bgi.Width) / 2 Dim centerY As Integer = (cr.Height - bgi.Height) / 2 ' If the item is selected, draw the background ' image as usual. Otherwise, draw it as disabled. If item.Selected Then e.Graphics.DrawImage(bgi, centerX, centerY) Else ControlPaint.DrawImageDisabled(e.Graphics, bgi, centerX, centerY, item.BackColor) End If End If ' If the item is in the rollover state, ' draw a border around it. If item.Rollover Then ControlPaint.DrawFocusRectangle(e.Graphics, item.ContentRectangle) End If End If End Sub End Class ' This form tests various features of the RolloverItem ' control. RolloverItem conrols are created and added ' to the form's ToolStrip. They are also created and ' added to a button's ContextMenuStrip. The behavior ' of the RolloverItem control differs depending on ' the type of parent control. Public Class RolloverItemTestForm Inherits Form Private toolStrip1 As System.Windows.Forms.ToolStrip Private WithEvents button1 As System.Windows.Forms.Button Private infoIconKey As String = "Information icon" Private handIconKey As String = "Hand icon" Private exclIconKey As String = "Exclamation icon" Private questionIconKey As String = "Question icon" Private warningIconKey As String = "Warning icon " Private components As System.ComponentModel.IContainer = Nothing Public Sub New() InitializeComponent() ' Set up the form's ToolStrip control. InitializeToolStrip() ' Set up the ContextMenuStrip for the button. InitializeContextMenu() End Sub ' This utility method initializes the ToolStrip control's ' image list. For convenience, icons from the SystemIcons ' class are used for this demonstration, but any images ' could be used. Private Sub InitializeImageList(ts As ToolStrip) If ts.ImageList Is Nothing Then ts.ImageList = New ImageList() ts.ImageList.ImageSize = SystemIcons.Exclamation.Size ts.ImageList.Images.Add(Me.infoIconKey, SystemIcons.Information) ts.ImageList.Images.Add(Me.handIconKey, SystemIcons.Hand) ts.ImageList.Images.Add(Me.exclIconKey, SystemIcons.Exclamation) ts.ImageList.Images.Add(Me.questionIconKey, SystemIcons.Question) ts.ImageList.Images.Add(Me.warningIconKey, SystemIcons.Warning) End If End Sub Private Sub InitializeToolStrip() Me.InitializeImageList(Me.toolStrip1) Me.toolStrip1.Renderer = New RolloverItemRenderer() Dim item As RolloverItem = Me.CreateRolloverItem(Me.toolStrip1, "RolloverItem on ToolStrip", Me.Font, infoIconKey, TextImageRelation.ImageBeforeText, exclIconKey) Me.toolStrip1.Items.Add(item) item = Me.CreateRolloverItem(Me.toolStrip1, "RolloverItem on ToolStrip", Me.Font, infoIconKey, TextImageRelation.ImageBeforeText, exclIconKey) Me.toolStrip1.Items.Add(item) End Sub Private Sub InitializeContextMenu() Dim f = New System.Drawing.Font("Arial", 18F, FontStyle.Bold) Dim cms As New ContextMenuStrip() Me.InitializeImageList(cms) cms.Renderer = New RolloverItemRenderer() cms.AutoSize = True cms.ShowCheckMargin = False cms.ShowImageMargin = False Dim item As RolloverItem = Me.CreateRolloverItem( _ cms, _ "RolloverItem on ContextMenuStrip", _ f, _ handIconKey, _ TextImageRelation.ImageBeforeText, _ exclIconKey) cms.Items.Add(item) item = Me.CreateRolloverItem( _ cms, _ "Another RolloverItem on ContextMenuStrip", _ f, _ questionIconKey, _ TextImageRelation.ImageBeforeText, _ exclIconKey) cms.Items.Add(item) item = Me.CreateRolloverItem( _ cms, _ "And another RolloverItem on ContextMenuStrip", _ f, _ warningIconKey, _ TextImageRelation.ImageBeforeText, _ exclIconKey) cms.Items.Add(item) AddHandler cms.Closing, AddressOf cms_Closing Me.button1.ContextMenuStrip = cms End Sub ' This method handles the ContextMenuStrip ' control's Closing event. It prevents the ' RolloverItem from closing the drop-down ' when the item is clicked. Sub cms_Closing(sender As Object, e As ToolStripDropDownClosingEventArgs) If e.CloseReason = ToolStripDropDownCloseReason.ItemClicked Then e.Cancel = True End If End Sub ' This method handles the Click event for the button. ' it selects the first item in the ToolStrip control ' by using the ToolStripITem.Select method. Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click Dim item As RolloverItem = Me.toolStrip1.Items(0) If Not (item Is Nothing) Then item.Select() Me.Invalidate() End If End Sub ' This utility method creates a RolloverItem ' and adds it to a ToolStrip control. Private Function CreateRolloverItem( _ ByVal owningToolStrip As ToolStrip, _ ByVal txt As String, _ ByVal f As Font, _ ByVal imgKey As String, _ ByVal tir As TextImageRelation, _ ByVal backImgKey As String) As RolloverItem Dim item As New RolloverItem() item.Alignment = ToolStripItemAlignment.Left item.AllowDrop = False item.AutoSize = True item.BackgroundImage = owningToolStrip.ImageList.Images(backImgKey) item.BackgroundImageLayout = ImageLayout.Center item.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText item.DoubleClickEnabled = True item.Enabled = True item.Font = f ' These assignments are equivalent. Each assigns an ' image from the owning toolstrip's image list. item.ImageKey = imgKey 'item.Image = owningToolStrip.ImageList.Images[infoIconKey]; 'item.ImageIndex = owningToolStrip.ImageList.Images.IndexOfKey(infoIconKey); item.ImageScaling = ToolStripItemImageScaling.None item.Owner = owningToolStrip item.Padding = New Padding(2) item.Text = txt item.TextAlign = ContentAlignment.MiddleLeft item.TextDirection = ToolStripTextDirection.Horizontal item.TextImageRelation = tir Return item End Function Protected Overrides Sub Dispose(disposing As Boolean) If disposing AndAlso Not (components Is Nothing) Then components.Dispose() End If MyBase.Dispose(disposing) End Sub #Region "Windows Form Designer generated code" Private Sub InitializeComponent() Me.toolStrip1 = New System.Windows.Forms.ToolStrip() Me.button1 = New System.Windows.Forms.Button() Me.SuspendLayout() ' ' toolStrip1 ' Me.toolStrip1.AllowItemReorder = True Me.toolStrip1.Location = New System.Drawing.Point(0, 0) Me.toolStrip1.Name = "toolStrip1" Me.toolStrip1.Size = New System.Drawing.Size(845, 25) Me.toolStrip1.TabIndex = 0 Me.toolStrip1.Text = "toolStrip1" ' ' button1 ' Me.button1.Location = New System.Drawing.Point(12, 100) Me.button1.Name = "button1" Me.button1.Size = New System.Drawing.Size(86, 23) Me.button1.TabIndex = 1 Me.button1.Text = "Click to select" Me.button1.UseVisualStyleBackColor = True ' ' RolloverItemTestForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6F, 14F) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoSize = True Me.ClientSize = New System.Drawing.Size(845, 282) Me.Controls.Add(button1) Me.Controls.Add(toolStrip1) Me.Font = New System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0) Me.Name = "RolloverItemTestForm" Me.Text = "Form1" Me.ResumeLayout(False) Me.PerformLayout() End Sub #End Region End Class Public Class Program <STAThread()> _ Shared Sub Main() Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Application.Run(New RolloverItemTestForm()) End Sub End Class
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace RolloverItemDemoLib { // This class implements a ToolStripItem that highlights // its border and text when the mouse enters enters its // client rectangle. It has a clickable state which is // exposed through the Clicked property and displayed // by highlighting or graying out the item's image. public class RolloverItem : ToolStripItem { private bool clickedValue = false; private bool rolloverValue = false; private Rectangle imageRect; private Rectangle textRect; // For brevity, this implementation limits the possible // TextDirection values to ToolStripTextDirection.Horizontal. public override ToolStripTextDirection TextDirection { get { return base.TextDirection; } set { if (value == ToolStripTextDirection.Horizontal) { base.TextDirection = value; } else { throw new ArgumentException( "RolloverItem supports only horizontal text."); } } } // For brevity, this implementation limits the possible // TextImageRelation values to ImageBeforeText and TextBeforeImage. public new TextImageRelation TextImageRelation { get { return base.TextImageRelation; } set { if (value == TextImageRelation.ImageBeforeText || value == TextImageRelation.TextBeforeImage) { base.TextImageRelation = value; } else { throw new ArgumentException( "Unsupported TextImageRelation value."); } } } // This property returns true if the mouse is // inside the client rectangle. public bool Rollover { get { return this.rolloverValue; } } // This property returns true if the item // has been toggled into the clicked state. // Clicking again toggles it to the // unclicked state. public bool Clicked { get { return this.clickedValue; } } // The method defines the behavior of the Click event. // It simply toggles the state of the clickedValue field. protected override void OnClick(EventArgs e) { base.OnClick(e); this.clickedValue ^= true; } // The method defines the behavior of the DoubleClick // event. It shows a MessageBox with the item's text. protected override void OnDoubleClick(EventArgs e) { base.OnDoubleClick(e); string msg = String.Format("Item: {0}", this.Text); MessageBox.Show(msg); } // This method defines the behavior of the MouseEnter event. // It sets the state of the rolloverValue field to true and // tells the control to repaint. protected override void OnMouseEnter(EventArgs e) { base.OnMouseEnter(e); this.rolloverValue = true; this.Invalidate(); } // This method defines the behavior of the MouseLeave event. // It sets the state of the rolloverValue field to false and // tells the control to repaint. protected override void OnMouseLeave(EventArgs e) { base.OnMouseLeave(e); this.rolloverValue = false; this.Invalidate(); } // This method defines the painting behavior of the control. // It performs the following operations: // // Computes the layout of the item's image and text. // Draws the item's background image. // Draws the item's image. // Draws the item's text. // // Drawing operations are implemented in the // RolloverItemRenderer class. protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); if (this.Owner != null) { // Find the dimensions of the image and the text // areas of the item. this.ComputeImageAndTextLayout(); // Draw the background. This includes drawing a highlighted // border when the mouse is in the client area. ToolStripItemRenderEventArgs ea = new ToolStripItemRenderEventArgs( e.Graphics, this); this.Owner.Renderer.DrawItemBackground(ea); // Draw the item's image. ToolStripItemImageRenderEventArgs irea = new ToolStripItemImageRenderEventArgs( e.Graphics, this, imageRect ); this.Owner.Renderer.DrawItemImage(irea); // If the item is on a drop-down, give its // text a different highlighted color. Color highlightColor = this.IsOnDropDown ? Color.Salmon : SystemColors.ControlLightLight; // Draw the text, and highlight it if the // the rollover state is true. ToolStripItemTextRenderEventArgs rea = new ToolStripItemTextRenderEventArgs( e.Graphics, this, base.Text, textRect, this.rolloverValue ? highlightColor : base.ForeColor , base.Font, base.TextAlign); this.Owner.Renderer.DrawItemText(rea); } } // This utility method computes the layout of the // RolloverItem control's image area and the text area. // For brevity, only the following settings are // supported: // // ToolStripTextDirection.Horizontal // TextImageRelation.ImageBeforeText // TextImageRelation.ImageBeforeText // // It would not be difficult to support vertical text // directions and other image/text relationships. private void ComputeImageAndTextLayout() { Rectangle cr = base.ContentRectangle; Image img = base.Owner.ImageList.Images[base.ImageKey]; // Compute the center of the item's ContentRectangle. int centerY = (cr.Height - img.Height) / 2; // Find the dimensions of the image and the text // areas of the item. The text occupies the space // not filled by the image. if (base.TextImageRelation == TextImageRelation.ImageBeforeText && base.TextDirection == ToolStripTextDirection.Horizontal) { imageRect = new Rectangle( base.ContentRectangle.Left, centerY, base.Image.Width, base.Image.Height); textRect = new Rectangle( imageRect.Width, base.ContentRectangle.Top, base.ContentRectangle.Width - imageRect.Width , base.ContentRectangle.Height); } else if (base.TextImageRelation == TextImageRelation.TextBeforeImage && base.TextDirection == ToolStripTextDirection.Horizontal) { imageRect = new Rectangle( base.ContentRectangle.Right - base.Image.Width , centerY, base.Image.Width, base.Image.Height); textRect = new Rectangle( base.ContentRectangle.Left, base.ContentRectangle.Top, imageRect.X, base.ContentRectangle.Bottom); } } } #region RolloverItemRenderer // This is the custom renderer for the RolloverItem control. // It draws a border around the item when the mouse is // in the item's client area. It also draws the item's image // in an inactive state (grayed out) until the user clicks // the item to toggle its "clicked" state. internal class RolloverItemRenderer : ToolStripSystemRenderer { protected override void OnRenderItemImage( ToolStripItemImageRenderEventArgs e) { base.OnRenderItemImage(e); RolloverItem item = e.Item as RolloverItem; // If the ToolSTripItem is of type RolloverItem, // perform custom rendering for the image. if (item != null) { if (item.Clicked) { // The item is in the clicked state, so // draw the image as usual. e.Graphics.DrawImage( e.Image, e.ImageRectangle.X, e.ImageRectangle.Y); } else { // In the unclicked state, gray out the image. ControlPaint.DrawImageDisabled( e.Graphics, e.Image, e.ImageRectangle.X, e.ImageRectangle.Y, item.BackColor); } } } // This method defines the behavior for rendering the // background of a ToolStripItem. If the item is a // RolloverItem, it paints the item's BackgroundImage // centered in the client area. If the mouse is in the // item's client area, a border is drawn around it. // If the item is on a drop-down or if it is on the // overflow, a gradient is painted in the background. protected override void OnRenderItemBackground( ToolStripItemRenderEventArgs e) { base.OnRenderItemBackground(e); RolloverItem item = e.Item as RolloverItem; // If the ToolSTripItem is of type RolloverItem, // perform custom rendering for the background. if (item != null) { if (item.Placement == ToolStripItemPlacement.Overflow || item.IsOnDropDown) { using (LinearGradientBrush b = new LinearGradientBrush( item.ContentRectangle, Color.Salmon, Color.DarkRed, 0f, false)) { e.Graphics.FillRectangle(b, item.ContentRectangle); } } // The RolloverItem control only supports // the ImageLayout.Center setting for the // BackgroundImage property. if (item.BackgroundImageLayout == ImageLayout.Center) { // Get references to the item's ContentRectangle // and BackgroundImage, for convenience. Rectangle cr = item.ContentRectangle; Image bgi = item.BackgroundImage; // Compute the center of the item's ContentRectangle. int centerX = (cr.Width - bgi.Width) / 2; int centerY = (cr.Height - bgi.Height) / 2; // If the item is selected, draw the background // image as usual. Otherwise, draw it as disabled. if (item.Selected) { e.Graphics.DrawImage(bgi, centerX, centerY); } else { ControlPaint.DrawImageDisabled( e.Graphics, bgi, centerX, centerY, item.BackColor); } } // If the item is in the rollover state, // draw a border around it. if (item.Rollover) { ControlPaint.DrawFocusRectangle( e.Graphics, item.ContentRectangle); } } } #endregion } // This form tests various features of the RolloverItem // control. RolloverItem conrols are created and added // to the form's ToolStrip. They are also created and // added to a button's ContextMenuStrip. The behavior // of the RolloverItem control differs depending on // the type of parent control. public class RolloverItemTestForm : Form { private System.Windows.Forms.ToolStrip toolStrip1; private System.Windows.Forms.Button button1; private string infoIconKey = "Information icon"; private string handIconKey = "Hand icon"; private string exclIconKey = "Exclamation icon"; private string questionIconKey = "Question icon"; private string warningIconKey = "Warning icon "; private System.ComponentModel.IContainer components = null; public RolloverItemTestForm() { InitializeComponent(); // Set up the form's ToolStrip control. InitializeToolStrip(); // Set up the ContextMenuStrip for the button. InitializeContextMenu(); } // This utility method initializes the ToolStrip control's // image list. For convenience, icons from the SystemIcons // class are used for this demonstration, but any images // could be used. private void InitializeImageList(ToolStrip ts) { if (ts.ImageList == null) { ts.ImageList = new ImageList(); ts.ImageList.ImageSize = SystemIcons.Exclamation.Size; ts.ImageList.Images.Add( this.infoIconKey, SystemIcons.Information); ts.ImageList.Images.Add( this.handIconKey, SystemIcons.Hand); ts.ImageList.Images.Add( this.exclIconKey, SystemIcons.Exclamation); ts.ImageList.Images.Add( this.questionIconKey, SystemIcons.Question); ts.ImageList.Images.Add( this.warningIconKey, SystemIcons.Warning); } } private void InitializeToolStrip() { this.InitializeImageList(this.toolStrip1); this.toolStrip1.Renderer = new RolloverItemRenderer(); RolloverItem item = this.CreateRolloverItem( this.toolStrip1, "RolloverItem on ToolStrip", this.Font, infoIconKey, TextImageRelation.ImageBeforeText, exclIconKey); this.toolStrip1.Items.Add(item); item = this.CreateRolloverItem( this.toolStrip1, "RolloverItem on ToolStrip", this.Font, infoIconKey, TextImageRelation.ImageBeforeText, exclIconKey); this.toolStrip1.Items.Add(item); } private void InitializeContextMenu() { Font f = new System.Drawing.Font( "Arial", 18f, FontStyle.Bold); ContextMenuStrip cms = new ContextMenuStrip(); this.InitializeImageList(cms); cms.Renderer = new RolloverItemRenderer(); cms.AutoSize = true; cms.ShowCheckMargin = false; cms.ShowImageMargin = false; RolloverItem item = this.CreateRolloverItem( cms, "RolloverItem on ContextMenuStrip", f, handIconKey, TextImageRelation.ImageBeforeText, exclIconKey); cms.Items.Add(item); item = this.CreateRolloverItem( cms, "Another RolloverItem on ContextMenuStrip", f, questionIconKey, TextImageRelation.ImageBeforeText, exclIconKey); cms.Items.Add(item); item = this.CreateRolloverItem( cms, "And another RolloverItem on ContextMenuStrip", f, warningIconKey, TextImageRelation.ImageBeforeText, exclIconKey); cms.Items.Add(item); cms.Closing += new ToolStripDropDownClosingEventHandler(cms_Closing); this.button1.ContextMenuStrip = cms; } // This method handles the ContextMenuStrip // control's Closing event. It prevents the // RolloverItem from closing the drop-down // when the item is clicked. void cms_Closing(object sender, ToolStripDropDownClosingEventArgs e) { if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked) { e.Cancel = true; } } // This method handles the Click event for the button. // it selects the first item in the ToolStrip control // by using the ToolStripITem.Select method. private void button1_Click(object sender, EventArgs e) { RolloverItem item = this.toolStrip1.Items[0] as RolloverItem; if (item != null) { item.Select(); this.Invalidate(); } } // This utility method creates a RolloverItem // and adds it to a ToolStrip control. private RolloverItem CreateRolloverItem( ToolStrip owningToolStrip, string txt, Font f, string imgKey, TextImageRelation tir, string backImgKey) { RolloverItem item = new RolloverItem(); item.Alignment = ToolStripItemAlignment.Left; item.AllowDrop = false; item.AutoSize = true; item.BackgroundImage = owningToolStrip.ImageList.Images[backImgKey]; item.BackgroundImageLayout = ImageLayout.Center; item.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; item.DoubleClickEnabled = true; item.Enabled = true; item.Font = f; // These assignments are equivalent. Each assigns an // image from the owning toolstrip's image list. item.ImageKey = imgKey; //item.Image = owningToolStrip.ImageList.Images[infoIconKey]; //item.ImageIndex = owningToolStrip.ImageList.Images.IndexOfKey(infoIconKey); item.ImageScaling = ToolStripItemImageScaling.None; item.Owner = owningToolStrip; item.Padding = new Padding(2); item.Text = txt; item.TextAlign = ContentAlignment.MiddleLeft; item.TextDirection = ToolStripTextDirection.Horizontal; item.TextImageRelation = tir; return item; } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code private void InitializeComponent() { this.toolStrip1 = new System.Windows.Forms.ToolStrip(); this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // toolStrip1 // this.toolStrip1.AllowItemReorder = true; this.toolStrip1.Location = new System.Drawing.Point(0, 0); this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Size = new System.Drawing.Size(845, 25); this.toolStrip1.TabIndex = 0; this.toolStrip1.Text = "toolStrip1"; // // button1 // this.button1.Location = new System.Drawing.Point(12, 100); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(86, 23); this.button1.TabIndex = 1; this.button1.Text = "Click to select"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // RolloverItemTestForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.ClientSize = new System.Drawing.Size(845, 282); this.Controls.Add(this.button1); this.Controls.Add(this.toolStrip1); this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "RolloverItemTestForm"; this.Text = "Form1"; this.ResumeLayout(false); this.PerformLayout(); } #endregion } static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new RolloverItemTestForm()); } } }
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.ToolStripItem
System.Windows.Forms.ToolStripButton
System.Windows.Forms.ToolStripControlHost
System.Windows.Forms.ToolStripDropDownItem
System.Windows.Forms.ToolStripLabel
System.Windows.Forms.ToolStripSeparator
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
ToolStripItem メンバ
System.Windows.Forms 名前空間
ToolStrip クラス
ToolStripButton クラス
ToolStripLabel
ToolStripSeparator
ToolStripControlHost クラス
ToolStripComboBox クラス
ToolStripTextBox
ToolStripDropDownItem クラス
ToolStripMenuItem
ToolStripSplitButton
ToolStripDropDownButton クラス
その他の技術情報
ToolStrip コントロール (Windows フォーム)
ToolStrip サンプル
- ToolStripItem クラスのページへのリンク