Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将应用程序最小化到系统托盘?_C#_Winforms - Fatal编程技术网

C# 如何将应用程序最小化到系统托盘?

C# 如何将应用程序最小化到系统托盘?,c#,winforms,C#,Winforms,如何将应用程序最小化到系统托盘 我的应用程序是在C#Net中开发的。我已经编写了这样的代码,如果在从组合框中选择一些设置后单击按钮,表单将最小化到系统托盘。单击一次后,该按钮将被禁用。所以,我不能用那个按钮再次最小化表单。当用从COM端口接收的数据填充RichTextBox时,会弹出该表单。一切正常 问题是,当最小化表单在接收到串行数据后弹出时,我需要一个选项将其最小化并再次返回到系统托盘,以便在RichTextBox中填充新数据时再次弹出 我不想在窗体弹出时添加另一个按钮来执行此操作。还有别的

如何将应用程序最小化到系统托盘

我的应用程序是在C#Net中开发的。我已经编写了这样的代码,如果在从组合框中选择一些设置后单击按钮,表单将最小化到系统托盘。单击一次后,该按钮将被禁用。所以,我不能用那个按钮再次最小化表单。当用从COM端口接收的数据填充RichTextBox时,会弹出该表单。一切正常

问题是,当最小化表单在接收到串行数据后弹出时,我需要一个选项将其最小化并再次返回到系统托盘,以便在RichTextBox中填充新数据时再次弹出

我不想在窗体弹出时添加另一个按钮来执行此操作。还有别的办法吗

如果有人提供代码,以便在单击标题栏中的最小化按钮时,应用程序最小化到系统托盘,这会更好


我只想知道我必须使用的函数名,比如
private Form1\u Resize()
。实际上,不能使用Resize事件,因为它会在窗体最小化或最大化时触发。我只需要在窗体最小化时触发它。

添加一个键来最小化窗体如何

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
        this.WindowState = FormWindowState.Minimized;
    }
}

有成千上万的HowTo,你试过谷歌吗?仅举一个例子:

当表单弹出时,您可以再次启用按钮您唯一的问题是按钮被禁用?只要在窗体重新出现时重新启用它。您的意思是“最小化到任务栏”还是“隐藏并显示通知图标”?任务栏图标是靠近开始按钮的大图标,通知图标是靠近日期/时间的小图标。不,我对最小化到sysTray或弹出的代码没有问题。我无法重新启用最初使用的按钮,因为它用于打开COM端口。因此,一旦单击,COM端口将打开,表单将最小化到SysTray。在RichTextBox中接收并填充数据时,会弹出表单。单击按钮后,COM端口将一直打开,因此按钮(连接按钮)将被禁用。我需要一个方法或函数,可用于在单击标题栏中表单的最小化按钮时将应用程序最小化到SysTray。我只需要可以用于此目的的事件。如果我按下标题栏上的关闭按钮(X按钮),应用程序将关闭COM端口(如果它已打开),然后正常退出。为什么要问这个问题?我不是一个专业的.Net程序员。我是一名嵌入式设计师和程序员。这是我的项目的链接。如何改进代码,使其看起来更专业?[url]谢谢大家。这就是我需要的。我在Form_Resize event handler函数中使用了我的代码,但没有测试条件if(formWindowsState.Minimized==this.WindowsState)。所以,它试图在窗体调整大小时最小化,也就是在窗体尝试最小化以及尝试弹出时。我使用了私有void frmMain_Resize(对象发送方,事件参数e){if(FormWindowState.Minimized==this.WindowState){//My code to minimize to SysTray here}}现在它可以工作了。谢谢。但是我的问题解决了。我觉得最好使用表单标题栏的最小化按钮将应用程序最小化到SysTray。:)我认为您不希望启用它们,因为这似乎是显而易见的。:)如果按下关闭按钮会发生什么?如果我按下标题栏上的关闭按钮(X按钮),应用程序将关闭COM端口(如果它已打开),然后正常退出。为什么会有这个问题?我假设窗口只是一个通知窗口,在这种情况下,您应该注意如果您关闭它会发生什么,因为启用最小化也会启用关闭按钮。对于这个大小的应用程序,将所有内容都放在主窗体中是完全可以的。这是我的VC应用程序的链接。我只有一个表单,它的最大化按钮被禁用。它就像一个固定大小的对话框。是的,(u)和(X)。。。需要标题栏中的最小化和关闭按钮。我只是希望我的应用程序在打开COM端口后最小化到托盘,并等待文本框填充新收到的短信,还希望我的应用程序在短信显示后弹出。但我想把它最小化到托盘上,每次它弹出后,现在解决了。
private void frmMain_Resize(object sender, EventArgs e)
{
 if (FormWindowState.Minimized == this.WindowState)
{
 mynotifyicon.Visible = true;
 mynotifyicon.ShowBalloonTip(500);
 this.Hide();
}
 else if (FormWindowState.Normal == this.WindowState)
 {
 mynotifyicon.Visible = false;
 }
}