C#在禁用的文本框(表单)上显示工具提示

时间:2011-10-25 10:21:09

标签: c# textbox controls tooltip

我正试图在鼠标悬停期间显示工具提示以显示在禁用的文本框上。我知道,因为控件被禁用,以下操作无效:

private void textBox5_MouseHover(object sender, EventArgs e)
{
       // My tooltip display code here
}

如何让鼠标悬停在禁用的控件上显示工具提示?

非常感谢

3 个答案:

答案 0 :(得分:17)

如果禁用控件,MouseHover将不会触发。相反,您可以检查Form MouseMove事件是否悬停文本框

    public Form1()
    {
        InitializeComponent();
        textBox1.Enabled = false;
        toolTip.InitialDelay = 0;
    }

    private ToolTip toolTip = new ToolTip();
    private bool isShown = false;

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if(textBox1 == this.GetChildAtPoint(e.Location))
        {
            if(!isShown)
            {
                toolTip.Show("MyToolTip", this, e.Location);
                isShown = true;
            }
        }
        else
        {
            toolTip.Hide(textBox1);
            isShown = false;
        }
    }

enter image description here

答案 1 :(得分:0)

您还可以将ToolTip对象从设计器中的工具箱拖到窗体上。 然后在代码中,您只需调用SetToolTip()并传入按钮或文本框等,您希望工具提示分配给您希望它显示的文本。

myToolTip.SetToolTip(myTextBox, "You just hovered over myTextBox!");

答案 2 :(得分:0)

晚了聚会,但是遇到了同样的问题,找到了一个更好的解决方案:您可以将TextBox包裹在另一个Item中,然后在上面放一个ToolTip,就像这样:

<Grid ToolTip="ToolTip to display">
            <TextBox  IsEnabled="False" Text="Text to display" />
</Grid>