我只想要一个带有隐藏主窗口的ac#应用程序,它将处理并响应窗口消息.
我可以创建一个表单而不显示它,然后可以调用Application.Run()而不传入表单,但是如何将创建的表单挂钩到消息循环中?
还有另一种方法可以解决这个问题吗?
提前感谢任何提示!
小智 19
优秀!那个链接指向了我正确的方向.这似乎有效:
Form f = new Form1();
f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
f.ShowInTaskbar = false;
f.StartPosition = FormStartPosition.Manual;
f.Location = new System.Drawing.Point(-2000, -2000);
f.Size = new System.Drawing.Size(1, 1);
Application.Run(f);
Run Code Online (Sandbox Code Playgroud)
为了防止它显示在Alt-Tab中,您需要它作为工具窗口.不幸的是,这可以防止它最小化.但是将起始位置设置为手动并将其定位在屏幕外就可以了!
小智 17
在重写VC++ TaskTray应用程序的过程中,在C#.NET中,我发现以下方法真正可行以实现以下目的.
我遵循的步骤:
Run Code Online (Sandbox Code Playgroud)protected override void OnLoad(EventArgs e) { Visible = false; ShowInTaskbar = false; base.OnLoad(e); }
Mar*_* B. 13
我知道这是一个老问题,但它在谷歌排名很好,所以无论如何我都会提供我的解决方案.
我做了两件事:
private void Form_Load(object sender, EventArgs e)
{
Opacity = 0;
}
private void Form_Shown(object sender, EventArgs e)
{
Visible = false;
Opacity = 100;
}
Run Code Online (Sandbox Code Playgroud)
最好的方法是在构造函数中使用以下1-2行:
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false; // This is optional
Run Code Online (Sandbox Code Playgroud)
您甚至可以在VS Property窗口中设置Minimized属性.
您可以创建一个继承自的类System.Windows.Forms.NativeWindow
(提供基本的消息循环功能),并Handle
在其构造函数中引用该属性以创建其句柄并将其挂钩到消息循环中.一旦拨打电话Application.Run
,您就可以处理来自它的消息.
小智 5
我解决了这样的问题:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Main main = new Main();
Application.Run();
//Application.Run(new Main());
}
Run Code Online (Sandbox Code Playgroud)
此代码位于 Program.cs 文件中,您可以看到注释掉的原始 Application.Run 方法调用。我只是创建一个 Main 类对象(我的主窗体类名为 Main)并启动不带任何参数的应用程序消息循环。这将启动应用程序,初始化任何表单组件但不显示表单。
注意:你必须有一些方法来显示你的窗口(比如系统托盘图标、热键或计时器或任何你可能喜欢的东西)。
归档时间: |
|
查看次数: |
29447 次 |
最近记录: |