C# 向抖动文本框添加工具提示

C# 向抖动文本框添加工具提示,c#,winforms,tooltip,C#,Winforms,Tooltip,我正在尝试将工具提示添加到winform中抖动的文本框中。要添加工具提示,需要鼠标悬停事件,但如果文本框抖动,则不会触发鼠标悬停事件。是否有其他方法为鼠标悬停添加工具提示 当用户将鼠标悬停在此抖动的文本框上时,文本框的全部内容应显示在工具提示中。请尝试以下代码: TextBox TB = (TextBox)sender; int VisibleTime = 1000; //in milliseconds ToolTip tt = new Too

我正在尝试将工具提示添加到winform中抖动的文本框中。要添加工具提示,需要鼠标悬停事件,但如果文本框抖动,则不会触发鼠标悬停事件。是否有其他方法为鼠标悬停添加工具提示


当用户将鼠标悬停在此抖动的文本框上时,文本框的全部内容应显示在工具提示中。

请尝试以下代码:

        TextBox TB = (TextBox)sender;
        int VisibleTime = 1000;  //in milliseconds

        ToolTip tt = new ToolTip();
        tt.Show("Test ToolTip",TB,0,0,VisibleTime);
使用X/Y值将其移动到所需的位置。可见时间是指它消失的时间

第一次鼠标悬停在文本框上时,文本框的工具提示不会显示

TextBox
的工具提示似乎只在第二次悬停事件时出现。
文本框是否为
只读
并不重要。但作为一种解决方法,您可以自己处理
MouseHover
MouseLeave
事件并编写此类代码:

private void textBox1_MouseHover(object sender, EventArgs e)
{
    var point = this.textBox1.PointToClient(Cursor.Position);
    point.Offset(0, 20);
    this.toolTip1.Show("Some Text", this.textBox1,
        point, 2000);
}
private void textBox1_MouseLeave(object sender, EventArgs e)
{
    this.toolTip1.Hide(this.textBox1);
}
以下是修复前行为的屏幕截图:

修复后的屏幕截图:


抖动的
文本框是什么意思?“文本框”不可编辑,控件无法打开。它基本上表现为一个“标签”。您是设置
Enabled=false
还是设置
ReadOnly=true
?Enabled设置为false,ReadOnly设置为true。将Enabled设置为
true
,然后尝试不“玩X/Y值”。使用
工具提示的重载。显示带有控件对象并自动确定正确位置的
。是的,但是当文本框抖动时,控件将不会到达那里。你确定吗?我目前还没有运行带有VisualStudio的虚拟机,但我肯定以前就注意到了这个bug。如果创建工具提示控件并将其与窗体构造函数(SetToolTip)中的正确控件相关联,是否仍会看到此延迟?应该没有理由手动调用Show方法。我听说过这个bug,但并不是说它只出现在后续调用中。@CodyGray第一个屏幕截图是正常的行为(可能是bug)。我在表单上放置了一个工具提示组件,并在设计时为文本框设置工具提示。然后我运行代码,您可以看到结果。工具提示不会在第一次悬停时显示,而是在第二次悬停时显示。我只使用一个工具提示组件。关于手动调用show,我也不希望手动调用show,但经过一些尝试和错误后,这是我能够获得的最佳结果。当前问题不是关于重新出现,问题事件存在于首次出现。