【问题标题】:How can I hide a form created in runtime when user clicks on minimize button using C#?当用户使用 C# 单击最小化按钮时,如何隐藏在运行时创建的表单?
【发布时间】:2016-02-21 04:23:20
【问题描述】:

我开始学习 C#,我为自己定义的第一个目标是编写一个小应用程序,该应用程序开始在系统托盘上运行,并在用户将鼠标移到其图标上时在其尖端显示 CPU 温度。我已经发现了很多关于我需要什么的好问题(如herehereherehere)。但是,我想做一些我还没有找到答案的事情。

我的应用程序将在运行时创建它唯一的表单,并且仅当用户单击托盘图标上下文菜单中的选项之一时才会显示它。它已经在我的项目上工作了,但是当用户单击其最小化按钮时,我无法找到隐藏此表单的方法。

我希望应用程序以这种方式运行:当用户单击表单的最小化按钮时,它应该被隐藏(并且不会显示在任务栏中),但应用程序仍应在系统托盘中保持运行。

那么,如何将调整大小或最小化(或其他)事件与运行时创建的表单相关联?

如果有任何帮助,我将不胜感激。提前致谢。

P.S.:表单不是应用程序的启动对象,而是自定义的应用程序上下文。

编辑:

相关代码摘录

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
[STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyApplicationContext()); 
    }
}

public class AppForm : System.Windows.Forms.Form
{
    public AppForm()
    {
        this.Size = new System.Drawing.Size(300, 300);
        this.StartPosition = FormStartPosition.CenterScreen;
        this.MaximizeBox = false;
        this.FormBorderStyle = FormBorderStyle.FixedSingle;
        this.Icon = CPUTemp.Properties.Resources.AppIcon;
    }
}

public class MyApplicationContext : ApplicationContext
{
    NotifyIcon trayIcon = new NotifyIcon();
    AppForm frmSetup = new AppForm();

    public MyApplicationContext()
    {
        MenuItem setupMenuItem = new MenuItem("Setup", new EventHandler(ShowSetup));
        MenuItem exitMenuItem = new MenuItem("Exit", new EventHandler(Exit));
(...)

【问题讨论】:

  • 你还有代码吗?
  • 是的,我有。但是我拥有的代码可以正常工作。我只是不知道如何将 na 事件与运行时创建的表单相关联。我使用自定义的应用程序上下文构造函数来创建表单。请查看使用代码摘录更新的问题。
  • 好的,我可以像使用最大化按钮一样禁用最小化按钮。但是,我已经看到一些应用程序以这种方式运行(当用户最小化其表单时,它会将其隐藏并继续在系统托盘中运行)。
  • 确实它可能是一个选项,但我不知道当用户点击表单的最小化按钮时如何调用它。关键是表单是在运行时创建的,我不知道在这种情况下如何将任何代码与其最小化(或调整大小)事件相关联。我相信它可能很简单,但我看不到它......

标签: c#


【解决方案1】:

使用此代码为表单的 Resize 事件添加事件处理程序

if (WindowState == FormWindowState.Minimized)
      Hide();

【讨论】:

    【解决方案2】:

    在等待您的帮助时,我一直在寻找答案,我才找到它。我想和你分享。

    您可以在this link 中找到有关如何在运行时创建事件处理程序并将其与对象关联的详细说明。

    感谢大家的支持,特别是西门子。

    【讨论】:

      猜你喜欢
      • 2021-05-24
      • 1970-01-01
      • 2021-08-12
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多