在鼠标悬停时在C#表单应用程序中创建文本弹出窗口

时间:2012-10-23 21:32:42

标签: c# winforms

  

可能重复:
  create custom tooltip C#

当用户游标某个项目时,是否有人知道如何制作一个“弹出窗口”框?

例如,我希望在C#表单应用程序上有一个PictureBox,当用户对其进行游标时,会弹出一个文本框。

我知道ToolTip但是我想的是更可定制的东西;在我的脑海里,我想到你在“魔兽世界”中看到的那种弹出框,当你将光标放在你的库存中的一个项目上时(显然它不一定是华而不实,但至少有一个文字颜色,背景颜色,文字等都可以修改。

3 个答案:

答案 0 :(得分:3)

您可以使用ToolStripControlHost来托管控件(例如面板)并添加所需的内容。然后使用Items集合将该控件添加到ToolStripDropDown,并使用Show(Control,Point)方法显示控件。


以为我会添加一个例子

public class Form1 {
    public Form1() {
        ToolStripDropDown customToolTip = new ToolStripDropDown();
        customToolTip.Items.Add(new CustomPopupControl("Hello", "world"));
        MouseMove += (o, e) => {
            Point location = e.Location;
            location.Offset(0, 16);
            customToolTip.Show(this, location);
        };
    }

    class CustomPopupControl : ToolStripControlHost {
        public CustomPopupControl(string title, string message)
            : base(new Panel()) {
            Label titleLabel = new Label();
            titleLabel.BackColor = SystemColors.Control;
            titleLabel.Text = title;
            titleLabel.Dock = DockStyle.Top;

            Label messageLabel = new Label();
            messageLabel.BackColor = SystemColors.ControlLightLight;
            messageLabel.Text = message;
            messageLabel.Dock = DockStyle.Fill;

            Control.MinimumSize = new Size(90, 64);
            Control.Controls.Add(messageLabel);
            Control.Controls.Add(titleLabel);
        }
    }
}

答案 1 :(得分:1)

我的意思是,如果是按钮或图像按钮,您可以添加类似MouseHover操作的内容,然后显示您的消息

private void button1_MouseHover(object sender, System.EventArgs e) 
{
MessageBox.Show("yourmessage"); 

} 

答案 2 :(得分:0)

您需要自定义工具提示。参考 http://www.codeproject.com/Articles/98967/A-ToolTip-with-Title-Multiline-Contents-and-Image

还有其他一些文章,但这个对我来说很好。

您可能需要为您的要求添加代码。