ToolStripItem クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ToolStrip または ToolStripDropDown に格納できるすべての要素のイベントおよびレイアウトを管理する抽象基本クラスを表します。
public ref class ToolStripItem abstract : System::ComponentModel::Component, IDisposable, System::Windows::Forms::IDropTarget
public ref class ToolStripItem abstract : System::Windows::Forms::BindableComponent, IDisposable, System::Windows::Forms::IDropTarget
public abstract class ToolStripItem : System.ComponentModel.Component, IDisposable, System.Windows.Forms.IDropTarget
public abstract class ToolStripItem : System.Windows.Forms.BindableComponent, IDisposable, System.Windows.Forms.IDropTarget
type ToolStripItem = class
inherit Component
interface IDropTarget
interface IComponent
interface IDisposable
type ToolStripItem = class
inherit BindableComponent
interface IDropTarget
interface IComponent
interface IDisposable
Public MustInherit Class ToolStripItem
Inherits Component
Implements IDisposable, IDropTarget
Public MustInherit Class ToolStripItem
Inherits BindableComponent
Implements IDisposable, IDropTarget
- 継承
- 継承
- 派生
- 実装
例
次のコード例は、カスタム ToolStripItem コントロールを実装する方法を示しています。
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 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());
}
}
}
Option Strict On
Option Explicit On
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 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 = Me.clickedValue Xor 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 (Me.Owner IsNot 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 = CType(IIf(Me.IsOnDropDown, Color.Salmon, SystemColors.ControlLightLight), Color)
' Draw the text, and highlight it if the
' the rollover state is true.
Dim rea As New ToolStripItemTextRenderEventArgs( _
e.Graphics, _
Me, _
MyBase.Text, _
textRect, _
CType(IIf(Me.rolloverValue, highlightColor, MyBase.ForeColor), Color), _
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 = CInt((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 = CType(e.Item, RolloverItem)
' If the ToolSTripItem is of type RolloverItem,
' perform custom rendering for the image.
If (item IsNot 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 = CType(e.Item, RolloverItem)
' If the ToolSTripItem is of type RolloverItem,
' perform custom rendering for the background.
If (item IsNot 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 = CInt((cr.Width - bgi.Width) / 2)
Dim centerY As Integer = CInt((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 As New System.Drawing.Font("Arial", 18.0F, 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", _
CType(f, Drawing.Font), _
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.
Private 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 = CType(Me.toolStrip1.Items(0), RolloverItem)
If (item IsNot 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 (components IsNot 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
注釈
はToolStripItem、コントロールまたはコントロールToolStripDropDownに含ToolStripめることができるボタン、コンボ ボックス、テキスト ボックス、ラベルなどの要素で、Windows ショートカット メニューに似ています。 クラスは ToolStrip 、これらの要素の描画とキーボードとマウスの入力 (ドラッグ アンド ドロップ入力を含む) を管理し ToolStripItem 、クラスは要素自体内のイベントとレイアウトを管理します。
ToolStripItem クラスは、ToolStripItem を直接継承するか、ToolStripItem、ToolStripControlHost、または ToolStripDropDownItem を間接的に継承します。
ToolStripItem コントロールは、ToolStrip、MenuStrip、StatusStrip、または ContextMenuStrip に含まれる必要があり、フォームに直接追加することはできません。 さまざまなコンテナー クラスは、ToolStripItem コントロールの適切なサブセットを含むように設計されています。
メモ 指定された ToolStripItem は、複数の親 ToolStripを持つことはできません。 をコピーし、他ToolStripのToolStripItemコントロールに追加する必要があります。
次の表は、 クラスから派生し、 ToolStripItem または ToolStripDropDownでホストできる要素をToolStrip示しています。
要素 | 説明 |
---|---|
ToolStripButton | 画像とテキストをサポートするツール バー ボタン。 |
ToolStripLabel | 通常、ステータス バーまたはコメントまたは ToolStrip タイトルとして使用されるテキスト ラベル。 |
ToolStripSeparator | 要素を視覚的にグループ化する垂直バーを含む、選択できないスペースまたはスペース。 |
ToolStripControlHost |
ToolStripItem、その他のToolStripComboBoxToolStripTextBoxToolStripProgressBarWindows フォーム コントロール、またはカスタム コントロールをホストする 。 は ToolStripComboBox 、ユーザーがテキストを入力できるテキスト ボックスと、テキスト ボックスに入力するテキストを選択できるリストです。 を ToolStripTextBox 使用すると、ユーザーはテキストを入力できます。 は ToolStripProgressBar 、 に含まれる Windows 進行状況バー コントロールを StatusStrip表します。 |
ToolStripDropDownItem | 、ToolStripItem、および ToolStripDropDownButtonをToolStripMenuItemToolStripSplitButtonホストする 。 は ToolStripMenuItem 、メニューまたはコンテキスト メニューに表示される選択可能なオプションです。 は ToolStripSplitButton 、通常のボタンとドロップダウン ボタンの組み合わせです。 は ToolStripDropDownButton 、ドロップダウン機能をサポートするボタンです。 |
ToolStripStatusLabel | コントロール内の StatusStrip パネル。 |
コンストラクター
ToolStripItem() |
ToolStripItem クラスの新しいインスタンスを初期化します。 |
ToolStripItem(String, Image, EventHandler) |
名前、イメージ、およびイベント ハンドラーを指定して、ToolStripItem クラスの新しいインスタンスを初期化します。 |
ToolStripItem(String, Image, EventHandler, String) |
表示テキスト、イメージ、イベント ハンドラー、および名前を指定して、ToolStripItem クラスの新しいインスタンスを初期化します。 |
プロパティ
AccessibilityObject |
コントロールに割り当てられた AccessibleObject を取得します。 |
AccessibleDefaultActionDescription |
アクセシビリティ クライアント アプリケーションで使用されるコントロールの既定のアクションの説明を取得または設定します。 |
AccessibleDescription |
ユーザー補助クライアント アプリケーションに通知される説明を取得または設定します。 |
AccessibleName |
ユーザー補助クライアント アプリケーションによって使用されるコントロールの名前を取得または設定します。 |
AccessibleRole |
コントロールのユーザー インターフェイス要素の型を指定する、コントロールのユーザー補助役割を取得または設定します。 |
Alignment |
項目が ToolStrip の先頭または末尾のいずれに合わせて配置されるかを示す値を取得または設定します。 |
AllowDrop |
実装するイベントによって、ドラッグ アンド ドロップおよび項目の順番変更が処理されるかどうかを示す値を取得または設定します。 |
Anchor |
ToolStripItem のバインド先コンテナーの端を取得または設定し、親のサイズ変更時に ToolStripItem のサイズがどのように変化するかを決定します。 |
AutoSize |
項目のサイズが自動的に設定されるかどうかを示す値を取得または設定します。 |
AutoToolTip |
ToolTipText のツールヒントに、Text プロパティまたは ToolStripItem プロパティを使用するかどうかを示す値を取得または設定します。 |
Available |
ToolStripItem を ToolStrip 上に配置するかどうかを示す値を取得または設定します。 |
BackColor |
項目の背景色を取得または設定します。 |
BackgroundImage |
項目に表示される背景イメージを取得または設定します。 |
BackgroundImageLayout |
ToolStripItem に使用する背景イメージのレイアウトを取得または設定します。 |
BindingContext |
IBindableComponent の CurrencyManager のコレクションを取得または設定します。 (継承元 BindableComponent) |
Bounds |
項目のサイズと位置を取得します。 |
CanRaiseEvents |
コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。 (継承元 Component) |
CanSelect |
項目を選択できるかどうかを示す値を取得します。 |
Command |
ToolStripItem のICommandExecute(Object)イベントが呼び出されたときに呼び出されるメソッドをClick取得または設定します。 |
CommandParameter | |
Container |
IContainer を含む Component を取得します。 (継承元 Component) |
ContentRectangle |
背景の境界線を上書きせずに、テキスト、アイコンなどのコンテンツを ToolStripItem 内に配置できる領域を取得します。 |
DataBindings |
このIBindableComponent のデータ バインディング オブジェクトのコレクションを取得します。 (継承元 BindableComponent) |
DefaultAutoToolTip |
既定として定義されている ToolTip を表示するかどうかを示す値を取得します。 |
DefaultDisplayStyle |
ToolStripItem に表示されている内容を示す値を取得します。 |
DefaultMargin |
項目の既定のマージンを取得します。 |
DefaultPadding |
項目の内部のスペーシング特性を取得します。 |
DefaultSize |
項目の既定のサイズを取得します。 |
DesignMode |
Component が現在デザイン モードかどうかを示す値を取得します。 (継承元 Component) |
DismissWhenClicked |
ToolStripDropDown の項目がクリックされた後、非表示にするかどうかを示す値を取得します。 |
DisplayStyle |
テキストおよびイメージが ToolStripItem に表示されるかどうかを取得または設定します。 |
Dock |
ToolStripItem の境界のうちのどれが、親コントロールにドッキングしているかを取得または設定し、親のサイズ変更時に ToolStripItem のサイズがどのように変化するかを決定します。 |
DoubleClickEnabled |
ToolStripItem がマウスのダブルクリックによってアクティブになるかどうかを示す値を取得または設定します。 |
Enabled |
ToolStripItem の親コントロールが有効かどうかを示す値を取得または設定します。 |
Events |
Component に結び付けられているイベント ハンドラーのリストを取得します。 (継承元 Component) |
Font |
項目によって表示されるテキストのフォントを取得または設定します。 |
ForeColor |
項目の前景色を取得または設定します。 |
Height |
ToolStripItem の高さをピクセル単位で取得または設定します。 |
Image |
ToolStripItem に表示されるイメージを取得または設定します。 |
ImageAlign |
ToolStripItem 上のイメージの配置を取得または設定します。 |
ImageIndex |
項目に表示されるイメージのインデックス値を取得または設定します。 |
ImageKey |
ImageList に表示されている ToolStripItem で、イメージのキー アクセサーを取得または設定します。 |
ImageScaling |
ToolStripItem 上のイメージが、コンテナーに合わせて自動的にサイズ変更されるかどうかを示す値を取得または設定します。 |
ImageTransparentColor |
ToolStripItem イメージ内で透明と見なされる色を取得または設定します。 |
IsDisposed |
オブジェクトが破棄されているかどうかを示す値を取得します。 |
IsOnDropDown |
現在の Control のコンテナーが ToolStripDropDown かどうかを示す値を取得します。 |
IsOnOverflow | |
Margin |
項目と隣接する項目との間隔を取得または設定します。 |
MergeAction |
子メニューが親メニューにマージされる方法を取得または設定します。 |
MergeIndex |
現在の ToolStrip 内のマージされた項目の位置を取得または設定します。 |
Name |
項目の名前を取得または設定します。 |
Overflow |
項目が ToolStrip または ToolStripOverflowButton のいずれかに関連付けられているか、それとも 2 つの間で変動するかを取得または設定します。 |
Owner |
この項目の所有者を取得または設定します。 |
OwnerItem |
この ToolStripItem の親 ToolStripItem を取得します。 |
Padding |
項目のコンテンツと項目の端との間の内部スペーシングをピクセル単位で取得または設定します。 |
Parent |
ToolStripItem の親コンテナーを取得または設定します。 |
Placement |
項目の現在のレイアウトを取得します。 |
Pressed |
項目が押された状態かどうかを示す値を取得します。 |
Renderer |
ToolStrip または ToolStripDropDown に格納できるすべての要素のイベントおよびレイアウトを管理する抽象基本クラスを表します。 |
RightToLeft |
項目が右から左へと並べられ、テキストが右から左へと表示されるかどうかを示す値を取得または設定します。 |
RightToLeftAutoMirrorImage |
ToolStripItem プロパティが RightToLeft に設定されている場合、Yes イメージを自動的に反映します。 |
Selected |
項目が選択されているかどうかを示す値を取得します。 |
ShowKeyboardCues |
ショートカット キーを表示、非表示のいずれにするかを示す値を取得します。 |
Site |
Component の ISite を取得または設定します。 (継承元 Component) |
Size |
項目のサイズを取得または設定します。 |
Tag |
アイテムに関するデータを含むオブジェクトを取得または設定します。 |
Text |
項目に表示されるテキストを取得または設定します。 |
TextAlign |
ToolStripLabel 上のテキストの配置を取得または設定します。 |
TextDirection |
ToolStripItem で使用されるテキストの方向を取得します。 |
TextImageRelation |
ToolStripItem のテキストとイメージの互いに相対的な位置を取得または設定します。 |
ToolTipText |
コントロールの ToolTip として表示されるテキストを取得または設定します。 |
Visible |
項目が表示されるかどうかを示す値を取得または設定します。 |
Width |
ToolStripItem の幅をピクセル単位で取得または設定します。 |
メソッド
イベント
AvailableChanged |
Available プロパティの値が変化したときに発生します。 |
BackColorChanged |
BackColor プロパティの値が変化したときに発生します。 |
BindingContextChanged |
バインディング コンテキストが変更されたときに発生します。 (継承元 BindableComponent) |
Click |
ToolStripItem がクリックされた時点で発生します。 |
CommandCanExecuteChanged |
プロパティにCanExecute(Object)割り当てられている Command のICommand状態が変更されたときに発生します。 |
CommandChanged | |
CommandParameterChanged |
CommandParameter プロパティの値が変更されたときに発生します。 |
DisplayStyleChanged |
DisplayStyle が変更された場合に発生します。 |
Disposed |
Dispose() メソッドの呼び出しによってコンポーネントが破棄されるときに発生します。 (継承元 Component) |
DoubleClick |
項目がマウスでダブルクリックされたときに発生します。 |
DragDrop |
ユーザーが項目をドラッグし、マウス ボタンを離したとき (つまり、項目がドロップされたとき) に発生します。 |
DragEnter |
この項目のクライアント領域に対し、ユーザーが項目をドラッグしたときに発生します。 |
DragLeave |
ユーザーが項目をドラッグし、マウス ポインターがこの項目のクライアント領域上から離れたときに発生します。 |
DragOver |
この項目のクライアント領域上に、ユーザーが項目をドラッグしたときに発生します。 |
EnabledChanged |
Enabled プロパティ値が変更されたときに発生します。 |
ForeColorChanged |
ForeColor プロパティの値が変化すると発生します。 |
GiveFeedback |
ドラッグ操作中に発生します。 |
LocationChanged |
ToolStripItem の位置が更新されたときに発生します。 |
MouseDown |
マウス ポインターが項目上にあり、マウス ボタンがクリックされると発生します。 |
MouseEnter |
マウス ポインターによって項目が入力されると発生します。 |
MouseHover |
マウス ポインターが項目上を移動すると発生します。 |
MouseLeave |
マウス ポインターが項目を離れると発生します。 |
MouseMove |
マウス ポインターが項目上を移動すると発生します。 |
MouseUp |
マウス ポインターが項目上にあり、マウス ボタンを離すと発生します。 |
OwnerChanged |
Owner プロパティが変更されたときに発生します。 |
Paint |
項目が再描画されると発生します。 |
QueryAccessibilityHelp |
ユーザー補助クライアント アプリケーションが ToolStripItem のヘルプを呼び出したときに発生します。 |
QueryContinueDrag |
ドラッグ アンド ドロップ操作中に発生し、ドラッグ ソースがドラッグ アンド ドロップ操作をキャンセルする必要があるかどうかを決定できるようにします。 |
RightToLeftChanged |
RightToLeft プロパティの値が変化すると発生します。 |
SelectedChanged |
ToolStrip または ToolStripDropDown に格納できるすべての要素のイベントおよびレイアウトを管理する抽象基本クラスを表します。 |
TextChanged |
Text プロパティの値が変化したときに発生します。 |
VisibleChanged |
Visible プロパティの値が変化したときに発生します。 |
明示的なインターフェイスの実装
IDropTarget.OnDragDrop(DragEventArgs) |
DragDrop イベントを発生させます。 |
IDropTarget.OnDragEnter(DragEventArgs) |
DragEnter イベントを発生させます。 |
IDropTarget.OnDragLeave(EventArgs) |
DragLeave イベントを発生させます。 |
IDropTarget.OnDragOver(DragEventArgs) |
|
適用対象
こちらもご覧ください
.NET