【发布时间】:2011-12-14 20:00:42
【问题描述】:
对于文本框,我想在焦点位于文本框上时立即显示工具提示,并在焦点期间停留在那里 - 而不仅仅是当鼠标悬停在文本框上时。
我该怎么做?
【问题讨论】:
对于文本框,我想在焦点位于文本框上时立即显示工具提示,并在焦点期间停留在那里 - 而不仅仅是当鼠标悬停在文本框上时。
我该怎么做?
【问题讨论】:
Enter 和 Leave 事件在这里可能很有用,并以 0 的持续时间显示以将其保留在那里。
private ToolTip tt;
private void textBox1_Enter(object sender, EventArgs e) {
tt = new ToolTip();
tt.InitialDelay = 0;
tt.IsBalloon = true;
tt.Show(string.Empty, textBox1);
tt.Show("I need help", textBox1, 0);
}
private void textBox1_Leave(object sender, EventArgs e) {
tt.Dispose();
}
注意:在我的示例中调用Show(...) 方法两次将强制“指针”正确指向控件。
【讨论】:
已测试,事件名称:
private void textbox_Enter(object sender, EventArgs e)
{
toolTip1.Show("your tip here", textbox);
}
private void textbox_Leave(object sender, EventArgs e)
{
toolTip1.Hide(textbox);
}
tooltip是一个控件,需要从工具箱中添加。
【讨论】:
使用mouse hover 和mouse leave 事件
private void textBox1_MouseHover(object sender, EventArgs e)
{
toolTip1.Show("your tip here", textBox2);
}
private void textBox1_MouseLeave(object sender, EventArgs e)
{
toolTip1.Hide(textBox2);
}
>
【讨论】:
Windows 窗体
public partial class FormWindow : Form
{
//Constructor
public FormWindow()
{
txtUrl.Text = "Enter text here";
txtUrl.ForeColor = Color.Gray;
txtUrl.GotFocus += TxtUrl_GotFocus;
txtUrl.LostFocus += TxtUrl_LostFocus;
}
private void TxtUrl_GotFocus(object sender, EventArgs e)
{
txtUrl.Text = "";
txtUrl.ForeColor = Color.Black;
}
private void TxtUrl_LostFocus(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txtUrl.Text))
{
txtUrl.Text = "Enter text here";
txtUrl.ForeColor = Color.Gray;
}
}
}
【讨论】:
使用 System.Windows.Forms.ToolTip 并在文本框 GotFocus 事件中显示它并在 LostFocus 事件中隐藏它:
void textBox_GotFocus(object sender, EventArgs e)
{
toolTip.Show("your tip", textBox);
}
void textBox_LostFocus(object sender, EventArgs e)
{
toolTip.Hide(textBox);
}
【讨论】:
Enter 和Leave 时为什么这些事件不会出现在Visual Studio 属性窗格中吗?