Autor Beitrag
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 05.04.04 00:37 
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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christian S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 05.04.04 15:56 
Hallo!

Ich habe das Problem jetzt folgendermaßen gelöst:

Ich verwende folgenden Code im SizeChanged-Event der Form:
ausblenden 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:
ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.04.04 08:59 
Ich hab´s mal so probiert:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Do 08.04.04 14: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
ausblenden Delphi-Quelltext
1:
Application.Restore					

reingeschrieben ........ und es klappt
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.04.04 16: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.