Hallo, ich habe folgendes Problem: Ich möchte, wenn der Benutzer über ein Steuerelement, nehmen wir mal ein Label, dass sich eine Form öffnet die noch mehr Informationen enthält. Zur Zeit habe ich folgenden Code:
Form2 frm2 = null;
private void label1_MouseLeave(object sender, EventArgs e)
{
if (frm2 != null)
{
frm2.Close();
frm2 = null;
}
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (frm2 != null)
{
frm2.Top = MousePosition.Y;
frm2.Left = MousePosition.X;
}
}
private void label1_MouseEnter(object sender, EventArgs e)
{
if (frm2 == null)
{
frm2 = new Form2();
frm2.FormBorderStyle = FormBorderStyle.None;
frm2.Top = MousePosition.Y;
frm2.Left = MousePosition.X;
frm2.Show();
}
else
{
frm2.Top = MousePosition.X;
frm2.Left = MousePosition.Y;
}
}
Nun zum Problem: Zur Zeit geht dieser Code nur mit FormBorderStyle.Sizable, ich möchte aber gerne FormBorderStyle.None. Und dort ist das Problem, dass die Form nicht angezeigt wird und die Hauptform flackert.
Könnt ihr mir dabei bitte einmal helfen???
Danke
Hallo Akula,
mich wundert, dass er überhaupt geht.
Du erzeugst an der Mausposition ein Fenster, wodurch sich die Maus anschließend über dem neuen Fenster befindet, wodurch im alten Fenster eine MouseLeave ausgelöst werden müsste, das das neue Fenster gleich wieder schließt schließt, was zu einem MouseEnter führt, das wieder ein neues Fenster erzeugt und so weiter ...
herbivore
Stimmt auch wieder, gibt es denn irgendwelche Tipps oder Beispiel, die mir das Problem mal verdeutlichen?
Das Problem hat herbovire doch genau Beschrieben. Koppel doch mal das MouseLeave Event ab, dann wirst du sehen das deine Form aufgeht.
Wenn du es dennoch so haben möchtest das bei Verlassen des Labels die Form nicht mehr angeziegt wird, musst du das Fenster an einer anderen Mouse Position initialisieren. Schau dir auch mal Hide() an der Form an, möglichweise ist das in deinem Fall besser geeignet, da du die Form immer wieder neu erstellst, und schließt und neu erstellst und ....
Again what learned...
Mach doch das Fenster erst wieder zu, wenn die Maus das angezeigte Form verlässt und nicht wenn die Mouse das Label verlässt. Wenn ich jetzt nicht ganz daneben liege ist das auch das Standard-Verhalten bei "Popups". Würde also bedeutetn, das MouseLeave Event des Forms zu füllen statt das Event des Labels.
"It is not wise to be wise" - Sun Tzu
Nur um ganz sicherzugehen (nicht schlagen):
Du sucht aber kein ToolTip?
Hallo,
nein ich suche kein Tooltipp, sonder einfach nur das bei der Brührung des Labels eineine neue Form geöffnet wird, in der mehr Informationen stehen. Bei verlassen des Labels soll dies wieder geschlossen werden.
Gruß Akula
Hallo Akula,
sonder einfach nur das bei der Brührung des Labels [...] mehr Informationen stehen.
wobei das doch genau der Zweck von ToolTips ist.
herbivore
Würde sich sowas nicht eignen?
Ich meine, dass man zum Beispiel bei verschiedenen Autotypen eine Übersicht hat und wenn man dort auf einen Typ mit der Maus drüber fährt, sich ein neues Fenster öffnet und dort stehen dann eben noch mehr Informationen.
Gruß Akula
Hallo Akula,
ok, wobei das Problem ist doch jetzt erkannt und offensichtlich ist, wie man es vermeiden kann, oder?
herbivore
Habe mich noch einmal genauer mitbeschätigt und ich denke ds ist eher ein Pop-up was ich haben möchte. Nun frage ich mich, wie ich das wieder ausblenden kann, wenn der Benutzer das Steuerelment verlässt.
Gruß Akula
Sag mal hast du überhaupt die posts von den anderen hier gelesen?
Again what learned...
Habe ich, aber ich glaube eher wird reden bzw schreiben gerade aneinander vorbei.