Entwickler-Ecke
Andere .NET-Sprachen - ShowFormInTaskbar=false ... aber nicht wirklich
Christian S. - So 04.04.04 23:37
Titel: ShowFormInTaskbar=false ... aber nicht wirklich
Hallo!
Schon wieder ein WinForms-Problem. :-)
Ich habe eine Anwendung, welche nicht in der Taskbar, sondern nur in der TNA erscheinen soll. (Stichwort: "Minimize to Tray") Außerdem soll sie minimiert starten, was ja dann bedeutet, dass nur das TNA-Icon beim Start zu sehen ist.
TNA und minimiert Starten sind kein Problem. Und beim Start der Anwendung erscheint sie auch nicht in der Taskbar. Soweit alles in Ordnung.
Aber: Sobald ich die Anwendung einmal anzeigen lasse und dann wieder minimieren möchte, dann erscheint sie zwar nicht in der Taskbar, aber als "Balken" darüber. Unter "Balken" verstehe ich, dass nur noch eine extrem verkürzte Titelleiste sichtbar ist.
Wer kann mir sagen, wie ich diesen Effekt vermeiden kann?
MfG
Peter
Christian S. - Mo 05.04.04 14:56
Hallo!
Ich habe das Problem jetzt folgendermaßen gelöst:
Ich verwende folgenden Code im SizeChanged-Event der Form:
Delphi-Quelltext
1: 2:
| if self.WindowState = FormWindowState.Minimized then self.visible := False; |
Und um die Form wiederherzustellen (das geschieht durch einen Doppelklick auf das Trayicon), verwende ich folgenden Code im OnDoubleClick-Ereignis des Trayicons:
Delphi-Quelltext
1: 2:
| self.Visible := True; self.WindowState := FormWindowState.Normal; |
Sehr schön finde ich diese Lösung allerdings nicht, da beim minimieren die Form manchmal noch als "Balken" über der Taskbar aufflackert, bevor sie verschwindet.
Ich bin also immer noch an einer anderen Lösung interessiert!
MfG
Peter
Delete - Do 08.04.04 07:59
Ich hab´s mal so probiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TWinForm.NotifyIcon1_DoubleClick(sender: System.Object; e: System.EventArgs); begin self.Show; self.WindowState := FormWindowState.Normal;
self.Activate; end;
procedure TWinForm.TWinForm_SizeChanged(sender: System.Object; e: System.EventArgs); begin NotifyIcon1.Visible := (self.WindowState = FormWindowState.Minimized); self.Visible := not(self.WindowState = FormWindowState.Minimized); end; |
Vom Flackern habe ich nichts gesehen, aber der Effekt der kurzen Titelleiste kommt IMHO durch die "ShowInTaskbar = FALSE"-Einstellung zustande. Die würde ich auf TRUE lassen. Der Button in der Taskbar verschwindet (bzw. erscheint dann wieder) durch obigen Code.
TheNeon - Do 08.04.04 13:22
hi
erm ... kA ob das mit ".NET" auch geht, aber ich hatte eben dasselbe Problem und ich habe es so gelöst, dass wenn ich das Formblatt wieder sehen will (also Klick auf TrayIcon) einfach
reingeschrieben ........ und es klappt
Delete - Do 08.04.04 15:17
"Application.Restore" gibt´s nicht. (War auch mein erster Gedanke. ;)) Oder ich hab´s nicht gefunden. Aber so, wie ich das oben schrieb, funktioniert´s bei mir. Wobei das das erste Mal war, dass ich unter .NET mit einem TNA-Icon gearbeitet habe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!