Поделиться через


ToolStripItem.Placement Свойство

Определение

Возвращает текущую структуру элемента.

public:
 property System::Windows::Forms::ToolStripItemPlacement Placement { System::Windows::Forms::ToolStripItemPlacement get(); };
[System.ComponentModel.Browsable(false)]
public System.Windows.Forms.ToolStripItemPlacement Placement { get; }
[<System.ComponentModel.Browsable(false)>]
member this.Placement : System.Windows.Forms.ToolStripItemPlacement
Public ReadOnly Property Placement As ToolStripItemPlacement

Значение свойства

Одно из значений перечисления ToolStripItemPlacement.

Атрибуты

Примеры

В следующем примере кода показано, как использовать свойство для пользовательской Placement отрисовки. Этот пример входит в состав более крупного примера использования класса ToolStripItem.

// 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);
        }
    }
}
' 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

Комментарии

Проверьте свойство в событииPlacement, чтобы определить, был ли элемент помещен на mainToolStrip, переполнение ToolStripили он вообще не отображается.LayoutCompleted Типичные причины, по которым элемент не отображается: элемент не помещается в основной ToolStrip, свойство элемента Overflow имеет значение Never.

Применяется к