共用方式為


DrawToolTipEventArgs.AssociatedControl 屬性

定義

取得 ToolTip 是針對哪一個控制項所繪製。

public:
 property System::Windows::Forms::Control ^ AssociatedControl { System::Windows::Forms::Control ^ get(); };
public System.Windows.Forms.Control AssociatedControl { get; }
public System.Windows.Forms.Control? AssociatedControl { get; }
member this.AssociatedControl : System.Windows.Forms.Control
Public ReadOnly Property AssociatedControl As Control

屬性值

發生 Control 事件時,與 ToolTip 關聯的 Draw。 如果工具提示沒有與任何控制項相關聯,此傳回值將為 null

範例

下列程式碼範例示範如何自訂繪製 ToolTip 。 此範例會建立 ,並將它與位於 上的 FormButtonToolTip 控制項產生關聯。 此範例會將 OwnerDraw 屬性設定為 true ,並處理 Draw 事件。 在 事件處理常式中 DrawToolTip 會根據 屬性所指示 DrawToolTipEventArgs.AssociatedControl 顯示的按鈕 ToolTip ,以不同的方式繪製 。

下列程式碼範例摘錄示範如何使用 AssociatedControl 屬性。 如需完整的程式碼範例, DrawToolTipEventArgs 請參閱 類別概觀。

   // Handles drawing the ToolTip.
private:
   void toolTip1_Draw( System::Object^ /*sender*/, System::Windows::Forms::DrawToolTipEventArgs^ e )
   {
      // Draw the ToolTip differently depending on which 
      // control this ToolTip is for.
      // Draw a custom 3D border if the ToolTip is for button1.
      if ( e->AssociatedControl == button1 )
      {
         // Draw the standard background.
         e->DrawBackground();
         
         // Draw the custom border to appear 3-dimensional.
         array<Point>^ temp1 = {Point(0,e->Bounds.Height - 1),Point(0,0),Point(e->Bounds.Width - 1,0)};
         e->Graphics->DrawLines( SystemPens::ControlLightLight, temp1 );
         array<Point>^ temp2 = {Point(0,e->Bounds.Height - 1),Point(e->Bounds.Width - 1,e->Bounds.Height - 1),Point(e->Bounds.Width - 1,0)};
         e->Graphics->DrawLines( SystemPens::ControlDarkDark, temp2 );
         
         // Specify custom text formatting flags.
         TextFormatFlags sf = static_cast<TextFormatFlags>(TextFormatFlags::VerticalCenter | TextFormatFlags::HorizontalCenter | TextFormatFlags::NoFullWidthCharacterBreak);
         
         // Draw the standard text with customized formatting options.
         e->DrawText( sf );
      }
      // Draw a custom background and text if the ToolTip is for button2.
      else
      
      // Draw a custom background and text if the ToolTip is for button2.
      if ( e->AssociatedControl == button2 )
      {
         // Draw the custom background.
         e->Graphics->FillRectangle( SystemBrushes::ActiveCaption, e->Bounds );
         
         // Draw the standard border.
         e->DrawBorder();
         
         // Draw the custom text.
         // The using block will dispose the StringFormat automatically.
         StringFormat^ sf = gcnew StringFormat;
         try
         {
            sf->Alignment = StringAlignment::Center;
            sf->LineAlignment = StringAlignment::Center;
            sf->HotkeyPrefix = System::Drawing::Text::HotkeyPrefix::None;
            sf->FormatFlags = StringFormatFlags::NoWrap;
            System::Drawing::Font^ f = gcnew System::Drawing::Font( "Tahoma",9 );
            try
            {
               e->Graphics->DrawString( e->ToolTipText, f, SystemBrushes::ActiveCaptionText, e->Bounds, sf );
            }
            finally
            {
               if ( f )
                  delete safe_cast<IDisposable^>(f);
            }

         }
         finally
         {
            if ( sf )
               delete safe_cast<IDisposable^>(sf);
         }
      }
      // Draw the ToolTip using default values if the ToolTip is for button3.
      else if ( e->AssociatedControl == button3 )
      {
         e->DrawBackground();
         e->DrawBorder();
         e->DrawText();
      }
   }
// Handles drawing the ToolTip.
private void toolTip1_Draw(System.Object sender, 
    System.Windows.Forms.DrawToolTipEventArgs e)
{
    // Draw the ToolTip differently depending on which 
    // control this ToolTip is for.
    // Draw a custom 3D border if the ToolTip is for button1.
    if (e.AssociatedControl == button1)
    {
        // Draw the standard background.
        e.DrawBackground();

        // Draw the custom border to appear 3-dimensional.
        e.Graphics.DrawLines(SystemPens.ControlLightLight, new Point[] {
            new Point (0, e.Bounds.Height - 1), 
            new Point (0, 0), 
            new Point (e.Bounds.Width - 1, 0)
        });
        e.Graphics.DrawLines(SystemPens.ControlDarkDark, new Point[] {
            new Point (0, e.Bounds.Height - 1), 
            new Point (e.Bounds.Width - 1, e.Bounds.Height - 1), 
            new Point (e.Bounds.Width - 1, 0)
        });

        // Specify custom text formatting flags.
        TextFormatFlags sf = TextFormatFlags.VerticalCenter |
                             TextFormatFlags.HorizontalCenter |
                             TextFormatFlags.NoFullWidthCharacterBreak;

        // Draw the standard text with customized formatting options.
        e.DrawText(sf);
    }
    // Draw a custom background and text if the ToolTip is for button2.
    else if (e.AssociatedControl == button2)
    {
        // Draw the custom background.
        e.Graphics.FillRectangle(SystemBrushes.ActiveCaption, e.Bounds);

        // Draw the standard border.
        e.DrawBorder();

        // Draw the custom text.
        // The using block will dispose the StringFormat automatically.
        using (StringFormat sf = new StringFormat())
        {
            sf.Alignment = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;
            sf.HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.None;
            sf.FormatFlags = StringFormatFlags.NoWrap;
            using (Font f = new Font("Tahoma", 9))
            {
                e.Graphics.DrawString(e.ToolTipText, f, 
                    SystemBrushes.ActiveCaptionText, e.Bounds, sf);
            }
        }
    }
    // Draw the ToolTip using default values if the ToolTip is for button3.
    else if (e.AssociatedControl == button3)
    {
        e.DrawBackground();
        e.DrawBorder();
        e.DrawText();
    }
}
' Handles drawing the ToolTip.
Private Sub toolTip1_Draw(ByVal sender As System.Object, _
    ByVal e As DrawToolTipEventArgs) Handles toolTip1.Draw
    ' Draw the ToolTip differently depending on which 
    ' control this ToolTip is for.

    ' Draw a custom 3D border if the ToolTip is for button1.
    If (e.AssociatedControl Is button1) Then
        ' Draw the standard background.
        e.DrawBackground()

        ' Draw the custom border to appear 3-dimensional.
        e.Graphics.DrawLines( _
            SystemPens.ControlLightLight, New Point() { _
            New Point(0, e.Bounds.Height - 1), _
            New Point(0, 0), _
            New Point(e.Bounds.Width - 1, 0)})
        e.Graphics.DrawLines( _
            SystemPens.ControlDarkDark, New Point() { _
            New Point(0, e.Bounds.Height - 1), _
            New Point(e.Bounds.Width - 1, e.Bounds.Height - 1), _
            New Point(e.Bounds.Width - 1, 0)})

        ' Specify custom text formatting flags.
        Dim sf As TextFormatFlags = TextFormatFlags.VerticalCenter Or _
                             TextFormatFlags.HorizontalCenter Or _
                             TextFormatFlags.NoFullWidthCharacterBreak

        ' Draw standard text with customized formatting options.
        e.DrawText(sf)
    ElseIf (e.AssociatedControl Is button2) Then
        ' Draw a custom background and text if the ToolTip is for button2.

        ' Draw the custom background.
        e.Graphics.FillRectangle(SystemBrushes.ActiveCaption, e.Bounds)

        ' Draw the standard border.
        e.DrawBorder()

        ' Draw the custom text.
        Dim sf As StringFormat = New StringFormat
        Try
            sf.Alignment = StringAlignment.Center
            sf.LineAlignment = StringAlignment.Center
            sf.HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.None
            sf.FormatFlags = StringFormatFlags.NoWrap

            Dim f As Font = New Font("Tahoma", 9)
            Try
                e.Graphics.DrawString(e.ToolTipText, f, _
                    SystemBrushes.ActiveCaptionText, _
                    RectangleF.op_Implicit(e.Bounds), sf)
            Finally
                f.Dispose()
            End Try
        Finally
            sf.Dispose()
        End Try
    ElseIf (e.AssociatedControl Is button3) Then
        ' Draw the ToolTip using default values if the ToolTip is for button3.
        e.DrawBackground()
        e.DrawBorder()
        e.DrawText()
    End If
End Sub

備註

ToolTip因為 可以透過 ToolTip.SetToolTip 方法與多個控制項相關聯, AssociatedControl 所以 屬性可以用來判斷事件相關聯的控制項 Draw 。 如果您想要根據相關聯的控制項執行不同的工具提示自訂,這會很有説明。

適用於

另請參閱