【发布时间】: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