如果应用程序一开始在Windows Mobile 6中在后台运行它,我该如何最小化它?我希望最小化应用程序自动启动(即自动启动),稍后,如果用户想要查看应用程序,它可以从程序菜单等运行。
我尝试了一些代码,但它不起作用!
传统的最小化方案,虽然它不能解决我的问题,因为使用此代码将永远不会再向用户显示应用程序(即使此代码不起作用)
private void GUI_Load(object sender, EventArgs e)
{
this.Hide();
this.Visible = false;
}
,第二个选项是调用本机API(来源:http://www.blondmobile.com/2008/04/windows-mobilec-how-to-minimize-your_5311.html)
private void GUI_Load(object sender, EventArgs e)
{
this.HideApplication();
}
[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_MINIMIZED = 6;
public void HideApplication()
{
ShowWindow(this.Handle, SW_MINIMIZED);
}
第二个代码可以在程序的任何其他部分中运行,但不能从Load Event中运行。
答案 0 :(得分:2)
我认为唯一的解决方案是使用System.Windows.Forms.Timer
并且它正常工作
private void GUI_Load(object sender, EventArgs e)
{
// Initialize timer to hide application when automatically launched
_hideTimer = new System.Windows.Forms.Timer();
_hideTimer.Interval = 0; // 0 Seconds
_hideTimer.Tick += new EventHandler(_hideTimer_Tick);
_hideTimer.Enabled = true;
}
// Declare timer object
System.Windows.Forms.Timer _hideTimer;
void _hideTimer_Tick(object sender, EventArgs e)
{
// Disable timer to not use it again
_hideTimer.Enabled = false;
// Hide application
this.HideApplication();
// Dispose timer as we need it only once when application auto-starts
_hideTimer.Dispose();
}
[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_MINIMIZED = 6;
public void HideApplication()
{
ShowWindow(this.Handle, SW_MINIMIZED);
}