Подсказка не отображается - winforms - PullRequest
0 голосов
/ 07 марта 2019

У меня есть usercontrol2 (custom) в форме. Я определил всплывающую подсказку на пользовательском элементе управления. У usercontrol2 есть дочерние элементы управления.

Я хочу, чтобы всплывающая подсказка отображалась при нажатии на определенный дочерний элемент управления в usercontrol2. Подсказка должна скрываться, только если я нажимаю за пределами дочернего элемента управления.

Всплывающая подсказка отображается, когда я щелкаю дочерний элемент управления, но скрывается при перемещении позиции мыши. Кроме того, когда я щелкаю вне дочернего элемента управления и снова нажимаю на дочерний элемент управления, всплывающая подсказка не отображается.

Дочерний элемент управления называется usercontrol1.

public partial class UserControl2 : UserControl
{
    private Boolean IsToolTipShown;
    public UserControl2()
    {
        InitializeComponent();
        WireControl(userControl11);
        InitiliseToolTip();
    }
    private void WireControl(Control cont)
    {
        cont.MouseClick += UserControlMouseClick;
        foreach (Control ctl in cont.Controls)
        {
            ctl.MouseClick += UserControlMouseClick;
            if (ctl.HasChildren) WireControl(ctl);
        }
    }
    private void UserControlMouseClick(object sender, MouseEventArgs e)
    {
        if (!IsToolTipShown)
        {
            string s = null;
            for (int i = 0; i < 5; i++)
            {
                s += string.Concat(i, Environment.NewLine);
            }
            toolTip1.Show(s, userControl11);
            IsToolTipShown = true;
        }
    }
    private void InitiliseToolTip()
    {
        IsToolTipShown = false;
        toolTip1.AutomaticDelay = 0;
        toolTip1.BackColor = Color.Chartreuse;
        toolTip1.StripAmpersands = true;
        toolTip1.ToolTipIcon = ToolTipIcon.Info;
        toolTip1.UseFading = false;
    }
    protected override void OnMouseClick(MouseEventArgs e)
    {
        base.OnMouseClick(e);
        if (IsToolTipShown)
        {
            toolTip1.Hide(userControl11);
            IsToolTipShown = false;

        }
    }
}
...