2

我想在发生错误时显示气球提示而不是显示 MessageBox。

[注意] 我不希望它显示在鼠标悬停上。

我都试过了,但它们实际上显示了鼠标悬停的提示

toolTip1.SetToolTip();
toolTip1.Show();
4

2 回答 2

2

您可以使用ToolTip Popup 事件来检查是否存在 Tooltip,如果没有则取消它。然后,您可以在验证期间设置工具提示,然后显示它。在此示例中,我设置了一个计时器以在 2 秒超时后重置工具提示文本。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        toolTip1.IsBalloon = true;
        toolTip1.Popup += new PopupEventHandler(toolTip1_Popup);
        toolTip1.SetToolTip(textBox1, "");
    }

    void toolTip1_Popup(object sender, PopupEventArgs e)
    {
        if (toolTip1.GetToolTip(e.AssociatedControl) == "")
            e.Cancel = true;

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        timer1.Stop();
        toolTip1.RemoveAll();

    }

    private void textBox1_Validating(object sender, CancelEventArgs e)
    {
        int temp;
        if (!int.TryParse(textBox1.Text, out temp))
            showTip("Validation Error", (Control)sender);

    }

    private void showTip(string message, Control destination)
    {
        toolTip1.Show(message, destination);
        timer1.Start();
    }
}
于 2012-10-30T03:09:27.110 回答
0

令我惊讶的是,toolTip1.IsOpen = true 似乎会显示一个工具提示并允许它保持打开状态。请注意,您需要提供代码来关闭它,因为无论我做什么,它都不会在我的机器上自行消失。

于 2012-10-30T02:57:59.820 回答