【问题标题】:How to Hide a Form using the .NET Compact Framework如何使用 .NET Compact Framework 隐藏表单
【发布时间】:2012-11-26 13:33:54
【问题描述】:

我正在使用安装了 Windows Mobile 6.1 的智能设备。我需要完全隐藏我的应用程序(Form),但我无法做到这一点。我尝试调用Form.Hide 方法,但是没有任何效果,表单仍然是打开的、可见的和最大化的。我也尝试关注this post

[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

public Form1()
{
    InitializeComponent();
    Hide();
}

public new void Hide()
{
    const int SW_MINIMIZED = 6;

    FormBorderStyle = FormBorderStyle.FixedDialog;
    WindowState = FormWindowState.Normal;
    ControlBox = true;
    MinimizeBox = true;
    MaximizeBox = true;

    // Since there is no WindowState.Minimize, we have to P/Invoke ShowWindow
    ShowWindow(this.Handle, SW_MINIMIZED);
}

但没有任何影响(再次)。 完成这项工作的正确方法是什么?

【问题讨论】:

  • 您无法隐藏尚不可见的窗口。而是将窗体的 WindowState 属性设置为 FormWindowState.Minimized。或者只是在您真正希望它可见之前不要调用 Show()。
  • 如果你想“隐藏”应用程序,为什么你首先要有一个表单?
  • @ctacke 我可以用什么来代替我的 From?
  • 一个只有static void Main 入口点的标准应用程序会提供一个没有表单的应用程序。它可能有一个循环,是多线程的或其他什么。如果您需要处理 Windows 消息(您没有给出任何指示),您也可以创建自己的消息泵。有很多选择。
  • dotnet 智能设备表单的问题是,在 Forms 构造函数中使用 FormState 没有任何效果。在调用构造函数时,您无法更改表单状态,您必须使用计划将表单状态设置为最小化。或者,更好的是,根本不使用表格。另请参阅hjgode.de/wp/2012/11/07/mobile-development-move-your-form 上的一些不错的 Windows 状态

标签: c# winforms windows-mobile compact-framework hide


【解决方案1】:

应用程序不需要调用Application.Run(这需要 Compact Framework 中的表单)即可运行。如果您的应用不需要 UI,请不要创建表单。您可以从 Main 入口点创建一个状态循环、多线程以及几乎任何其他东西,而无需使用 Form。如果您需要处理 Windows 消息,您始终可以通过自己调用 GetMessageDispatchMessage 来创建自己的消息泵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2020-12-09
    • 2011-05-11
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多