У меня есть 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;
}
}
}