起動時に最初は非表示になっている Winform があります。
その後、ユーザーは下部にある通知アイコンをクリックして、必要に応じて表示できます。アイコンが最小化されたら、システム トレイに戻す必要があります。
トレイで問題なく起動します-問題ありません。表示されているのに最初にクリックして表示すると、ほんの一瞬、消えているように見えてから戻ってきます。そのため、少しちらつくように見えます。
次に、最小化すると、問題なくシステムトレイに移動します。ただし、クリックしてもう一度表示すると(一度行った後はいつでも)、システムトレイまたはタスクバーから滑り込むように表示されます。小さなアニメーションなしで表示することをお勧めします.
public class Program : Form
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Program());
}
private NotifyIcon trayIcon;
private ContextMenu trayMenu;
public Program()
{
trayMenu = new ContextMenu();
trayMenu.MenuItems.Add("Exit", OnExit);
trayMenu.MenuItems.Add("Show", OnShow);
trayIcon = new NotifyIcon();
trayIcon.Text = "MyTrayApp";
trayIcon.Icon = new Icon(SystemIcons.Application, 40, 40);
trayIcon.ContextMenu = trayMenu;
trayIcon.Visible = true;
}
protected override void OnLoad(EventArgs e)
{
Visible = false;
ShowInTaskbar = false;
base.OnLoad(e);
}
protected override void OnResize(EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
Visible = false;
ShowInTaskbar = false;
}
base.OnResize(e);
}
private void OnExit(object sender, EventArgs e)
{
Application.Exit();
}
private void OnShow(object sender, EventArgs e)
{
Visible = true;
ShowInTaskbar = true;
TopMost = true;
WindowState = FormWindowState.Normal;
}
protected override void Dispose(bool isDisposing)
{
if (isDisposing)
{
trayIcon.Dispose();
}
base.Dispose(isDisposing);
}
}
それを適切に表示する方法についての指針は本当にありがたいです。
アップデート
ちらつきの原因を発見しました。それTopMost
は が最後に設定されたときに発生したため、 が表示された後、上に再描画されます。これは理にかなっています。
現状では、アニメーションなしで表示および非表示にするだけです。