ToolTip für picturebox-und image-anzeigen
Ich habe eine PictureBox
hat eine Karte zugewiesen (im Grunde eine Liste von Rectangle
Objekte). Jetzt möchte ich machen es so, wenn der Benutzer bewegt die Maus über diese picturebox, und wenn sich die Maus über ein Rechteck, das vorhanden ist in der Liste, wird ein tooltip pop-up und zeigen einige Informationen.
Mapping funktioniert gut, aber problem ist das ToolTip
ist verrückt und nicht korrekt dargestellt werden, es geht einfach weiter poping mit der Maus verschieben. Wie kann ich code es es etwa nur pop-up, wenn die Maus in das Rechteck?
Dies ist mein code, und dort unten sehen Sie das Beispiel!
private void pictureBoxPackageView_MouseMove(object sender, MouseEventArgs e)
{
if (PackageMap == null || PackageMap.Count == 0) return;
var point = new Point(e.X, e.Y);
foreach (var map in PackageMap)
{
if (map.Rectangle.Contains(point))
{
var tip = new ToolTip();
tip.ToolTipTitle = map.Pin.Group;
tip.Show("Result: " + map.Pin.Mk2Result, pictureBoxPackageView, point, 200);
break;
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es kontinuierlich erscheint, weil man nur prüfen, wenn sich der cursor innerhalb eines Rechtecks. Denken Sie daran, dass Sie immer noch bewegen Sie die Maus mehrmals, aber Ihr immer noch innerhalb des Rechtecks.
Ich denke, was Sie wollen, ist das pop-up-tooltip nur einmal, wenn Sie geben Sie ein Rechteck.
Sie sollten erinnere mich an die Vorherige Position der Maus. Wenn die aktuelle Position innerhalb eines Rechtecks prüfen, wenn der Vorherige Standort nicht in das gleiche Rechteck. Dies ist die Zeit zum anzeigen der QuickInfo sonst passieren.
Möchte ich hinzufügen, einen benutzerdefinierten listener zu erkennen, die MouseEnter Ereignis und MouseLeave Ereignis für jeden einzelnen rechteckigen Behälter, den Sie wollen, eine deutliche tooltip anzeigen, hinzufügen, den code zum anzeigen der QuickInfo für X Sekunden auf MouseEnter (verwenden Sie die Show() Methode zum anzeigen). Wenn der Benutzer hält seinen cursor in das Rechteck, es werden weiterhin anzeigen für diese X Sekunden (verwenden Sie die AutoPopDelay - Eigenschaft auf automatisch ausblenden nach X Sekunden). Bewegt der Benutzer seinen cursor aus, das MouseLeave-Event sollen dann die Hide() Methode.
Ich würde auch einen eine zweite Verzögerung um mehrere tooltips öffnen, wenn Sie den cursor über mehrere Bereiche auf einmal. Verwenden Sie die InitialDelay - Eigenschaft für dieses.
Sollte in etwa so Aussehen (hier noch nicht die Eigenschaften, die entsprechend gesetzt):
Den Weg, den ich gehen würde, wäre eine Verlängerung der container, die Sie verwenden, und fügen Sie diese den Zuhörer auf eine benutzerdefinierte container-Klasse, vor allem, wenn Sie mehrere ähnliche Container, die alle diese Funktion benötigen.