내보내기(0) 인쇄
모두 확장
확장 최소화

DrawToolTipEventHandler 대리자

업데이트: 2007년 11월

ToolTipDraw 이벤트를 처리할 메서드를 나타냅니다.

네임스페이스:  System.Windows.Forms
어셈블리:  System.Windows.Forms(System.Windows.Forms.dll)

public delegate void DrawToolTipEventHandler(
	Object sender,
	DrawToolTipEventArgs e
)
/** @delegate */
public delegate void DrawToolTipEventHandler(
	Object sender,
	DrawToolTipEventArgs e
)
JScript에서는 대리자를 지원하지 않습니다.

매개 변수

sender
형식: System.Object

이벤트 소스입니다.

e
형식: System.Windows.Forms.DrawToolTipEventArgs

이벤트 데이터가 들어 있는 DrawToolTipEventArgs입니다.

ToolTip.OwnerDraw 속성 값이 true인 경우 ToolTip을 그릴 때 ToolTip 클래스에서 ToolTip.Draw 이벤트가 발생합니다. DrawToolTipEventArgs 클래스에는 도구 설명 텍스트, Rectangle 및 그리기를 수행할 Graphics 개체를 포함하여 ToolTip을 그리는 데 필요한 모든 정보가 포함됩니다. 도구 설명의 모양을 사용자 지정하려면 Rectangle을 사용하여 도구 설명의 범위를 지정하고 Graphics 개체를 사용하여 사용자 지정 그리기를 수행합니다. Popup 이벤트를 처리하여 표시되기 전에 ToolTip의 경계를 확장할 수 있습니다.

DrawToolTipEventHandler 대리자를 만드는 경우 이벤트를 처리할 메서드를 결정합니다. 이벤트를 이벤트 처리기와 연결하려면 대리자의 인스턴스를 해당 이벤트에 추가합니다. 대리자를 제거하지 않으면 이벤트가 발생할 때마다 이벤트 처리기가 호출됩니다. 이벤트 처리기 대리자에 대한 자세한 내용은 이벤트 및 대리자를 참조하십시오.

다음 코드 예제에서는 ToolTip을 사용자 지정으로 그리는 방법을 보여 줍니다. 예제에서는 ToolTip을 만들어서 Form에 있는 세 개의 Button 컨트롤에 연결합니다. 예제에서는 OwnerDraw 속성을 true로 설정하고 Draw 이벤트를 처리합니다. Draw 이벤트 처리기에서 ToolTipDrawToolTipEventArgs.AssociatedControl 속성에 지정된 대로 어떤 단추에 ToolTip이 표시되는가에 따라 각기 다르게 그려집니다.

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;

namespace ToolTipExample
{
    // Form for the ToolTip example.
    public class ToolTipExampleForm : System.Windows.Forms.Form
    {
        private System.Windows.Forms.ToolTip toolTip1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button3;

        public ToolTipExampleForm()
        {
            // Create the ToolTip and set initial values.
            this.toolTip1 = new System.Windows.Forms.ToolTip();
            this.toolTip1.AutoPopDelay = 5000;
            this.toolTip1.InitialDelay = 500;
            this.toolTip1.OwnerDraw = true;
            this.toolTip1.ReshowDelay = 10;
            this.toolTip1.Draw += new DrawToolTipEventHandler(this.toolTip1_Draw);
            this.toolTip1.Popup += new PopupEventHandler(toolTip1_Popup);

            // Create button1 and set initial values.
            this.button1 = new System.Windows.Forms.Button();
            this.button1.Location = new System.Drawing.Point(8, 8);
            this.button1.Text = "Button 1";
            this.toolTip1.SetToolTip(this.button1, "Button1 tip text");

            // Create button2 and set initial values.
            this.button2 = new System.Windows.Forms.Button();
            this.button2.Location = new System.Drawing.Point(8, 32);
            this.button2.Text = "Button 2";
            this.toolTip1.SetToolTip(this.button2, "Button2 tip text");

            // Create button3 and set initial values.
            this.button3 = new System.Windows.Forms.Button();
            this.button3.Location = new System.Drawing.Point(8, 56);
            this.button3.Text = "Button 3";
            this.toolTip1.SetToolTip(this.button3, "Button3 tip text");

            // Set up the Form.
            this.Controls.AddRange(new Control[] {
                this.button1, this.button2, this.button3
            });
            this.Text = "owner drawn ToolTip example";
        }

        // Clean up any resources being used.        
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                toolTip1.Dispose();
            }

            base.Dispose(disposing);
        }

        // The main entry point for the application.
        [STAThread]
        static void Main()
        {
            Application.Run(new ToolTipExampleForm());
        }

        // Determines the correct size for the button2 ToolTip.
        private void toolTip1_Popup(object sender, PopupEventArgs e)
        {
            if (e.AssociatedControl == button2)
            {
                using (Font f = new Font("Tahoma", 9))
                {
                    e.ToolTipSize = TextRenderer.MeasureText(
                        toolTip1.GetToolTip(e.AssociatedControl), f);
                }
            }
        }

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


package ToolTipExample;

import System.*;
import System.Drawing.*;
import System.Drawing.GDI.*;
import System.Windows.Forms.*;
import System.Windows.Forms.VisualStyles.*;

// Form for the ToolTip example.
public class ToolTipExampleForm extends System.Windows.Forms.Form
{
    private System.Windows.Forms.ToolTip toolTip1;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Button button2;
    private System.Windows.Forms.Button button3;

    public ToolTipExampleForm()
    {
        // Create the ToolTip and set initial values.
        this.toolTip1 = new System.Windows.Forms.ToolTip();
        this.toolTip1.set_AutoPopDelay(5000);
        this.toolTip1.set_InitialDelay(500);
        this.toolTip1.set_OwnerDraw(true);
        this.toolTip1.set_ReshowDelay(10);
        this.toolTip1.add_Draw(new DrawToolTipEventHandler(this.toolTip1_Draw));
        // Create button1 and set initial values.
        this.button1 = new System.Windows.Forms.Button();
        this.button1.set_Location(new System.Drawing.Point(8, 8));
        this.button1.set_Text("Button 1");
        this.toolTip1.SetToolTip(this.button1, "Button1 tip text");
        // Create button2 and set initial values.
        this.button2 = new System.Windows.Forms.Button();
        this.button2.set_Location(new System.Drawing.Point(8, 32));
        this.button2.set_Text("Button 2");
        this.toolTip1.SetToolTip(this.button2, "Button2 tip text");
        // Create button3 and set initial values.
        this.button3 = new System.Windows.Forms.Button();
        this.button3.set_Location(new System.Drawing.Point(8, 56));
        this.button3.set_Text("Button 3");
        this.toolTip1.SetToolTip(this.button3, "Button3 tip text");
        // Set up the Form.
        this.get_Controls().AddRange(new Control[]
            { this.button1, this.button2, this.button3 });
        this.set_Text("owner drawn ToolTip example");
    } //ToolTipExampleForm

    // Clean up any resources being used.        
    protected void Dispose(boolean disposing)
    {
        if (disposing) {
            toolTip1.Dispose();
        }
        super.Dispose(disposing);
    } //Dispose

    // The main entry point for the application.
    /** @attribute STAThread()
     */
    public static void main(String[] args)
    {
        Application.Run(new ToolTipExampleForm());
    } //main

    // Handles drawing the ToolTip.
    private void toolTip1_Draw(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.get_AssociatedControl().Equals(button1)) {
            // Draw the standard background.
            e.DrawBackground();
            // Draw the custom border to appear 3-dimensional.
            e.get_Graphics().DrawLines(SystemPens.get_ControlLightLight(),
                new Point[] { new Point(0, e.get_Bounds().get_Height() - 1),
                new Point(0, 0), new Point(e.get_Bounds().get_Width() - 1, 0)});
            e.get_Graphics().DrawLines(SystemPens.get_ControlDarkDark(),
                new Point[] { new Point(0, e.get_Bounds().get_Height() - 1),
                new Point(e.get_Bounds().get_Width() - 1,
                e.get_Bounds().get_Height() - 1),
                new Point(e.get_Bounds().get_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.get_AssociatedControl().Equals(button2)) {
                // Draw the custom background.
                e.get_Graphics().FillRectangle(SystemBrushes.get_ActiveCaption(),
                    e.get_Bounds());
                // Draw the standard border.
                e.DrawBorder();

                // Draw the custom text.
                // The using block will dispose the StringFormat automatically.
                StringFormat sf = new StringFormat();
                try {
                    sf.set_Alignment(StringAlignment.Center);
                    sf.set_LineAlignment(StringAlignment.Center);
                    sf.set_HotkeyPrefix(System.Drawing.Text.HotkeyPrefix.None);
                    sf.set_FormatFlags(StringFormatFlags.NoWrap);                    
                    Font f = new Font("Tahoma", 9);
                    try {
                        e.get_Graphics().DrawString(e.get_ToolTipText(), f,
                            SystemBrushes.get_ActiveCaptionText(),
                            RectangleF.op_Implicit(e.get_Bounds()), sf);
                    }
                    finally {
                        f.Dispose();
                    }                    
                }
                finally {
                    sf.Dispose();
                }                
            }
            // Draw the ToolTip using default values if the ToolTip is
            // for button3.
            else {
                if (e.get_AssociatedControl().Equals(button3)) {
                    e.DrawBackground();
                    e.DrawBorder();
                    e.DrawText();
                }
            }
        }        
    } //toolTip1_Draw
} //ToolTipExampleForm


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0에서 지원

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft