Gro*_*kys 108
我是从C#来的,但在vb.net中应该非常相似.
在主程序文件中,在Main方法中,您将具有以下内容:
Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的主窗体,并将应用程序的生命周期限制为主窗体的生命周期.
但是,如果将参数移除到Application.Run(),则应用程序将在没有显示任何表单的情况下启动,您可以随意显示和隐藏表单.
而不是在Load方法中隐藏表单,而是在调用Application.Run()之前初始化表单.我假设表单上会有一个NotifyIcon来在任务栏中显示一个图标 - 即使表单本身尚未显示,也可以显示该图标.调用Form.Show()
或Form.Hide()
来自NotifyIcon事件的处理程序将分别显示和隐藏表单.
小智 99
通常,当您使用托盘图标或其他方法稍后显示表单时,您只会执行此操作,但即使您从未显示主表单,它也能很好地工作.
在Form类中创建一个默认为false的bool:
private bool allowshowdisplay = false;
Run Code Online (Sandbox Code Playgroud)
然后重写SetVisibleCore方法
protected override void SetVisibleCore(bool value)
{
base.SetVisibleCore(allowshowdisplay ? value : allowshowdisplay);
}
Run Code Online (Sandbox Code Playgroud)
因为Application.Run()在加载表单后设置表单.Visible = true,这将拦截它并将其设置为false.在上面的例子中,它将始终设置为false,直到您通过将allowshowdisplay设置为true来启用它.
现在,这将使表单不会在启动时显示,现在您需要通过设置allowshowdisplay = true来重新启用SetVisibleCore以使其正常运行.您将希望在显示表单的任何用户界面功能上执行此操作.在我的例子中,它是我的notiyicon对象中的左键单击事件:
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
this.allowshowdisplay = true;
this.Visible = !this.Visible;
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ías 33
我用这个:
private void MainForm_Load(object sender, EventArgs e)
{
if (Settings.Instance.HideAtStartup)
{
BeginInvoke(new MethodInvoker(delegate
{
Hide();
}));
}
}
Run Code Online (Sandbox Code Playgroud)
显然你必须改变你的if条件.
Chr*_*riz 19
protected override void OnLoad(EventArgs e)
{
Visible = false; // Hide form window.
ShowInTaskbar = false; // Remove from taskbar.
Opacity = 0;
base.OnLoad(e);
}
Run Code Online (Sandbox Code Playgroud)
小智 14
在表单构造时(Designer,程序Main或Form构造函数,取决于您的目标),
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
Run Code Online (Sandbox Code Playgroud)
当您需要显示表单时,可能是来自NotifyIcon的事件,必要时反向,
if (!this.ShowInTaskbar)
this.ShowInTaskbar = true;
if (this.WindowState == FormWindowState.Minimized)
this.WindowState = FormWindowState.Normal;
Run Code Online (Sandbox Code Playgroud)
连续的显示/隐藏事件可以更简单地使用Form的Visible属性或Show/Hide方法.
小智 5
用这个扩展你的主表单:
using System.Windows.Forms;
namespace HideWindows
{
public class HideForm : Form
{
public HideForm()
{
Opacity = 0;
ShowInTaskbar = false;
}
public new void Show()
{
Opacity = 100;
ShowInTaskbar = true;
Show(this);
}
}
}
Run Code Online (Sandbox Code Playgroud)
例如:
namespace HideWindows
{
public partial class Form1 : HideForm
{
public Form1()
{
InitializeComponent();
}
}
}
Run Code Online (Sandbox Code Playgroud)
本文中的更多信息(西班牙语):
http://codelogik.net/2008/12/30/primer-form-oculto/
尝试也从任务栏隐藏该应用程序。
为此,请使用此代码。
protected override void OnLoad(EventArgs e)
{
Visible = false; // Hide form window.
ShowInTaskbar = false; // Remove from taskbar.
Opacity = 0;
base.OnLoad(e);
}
Run Code Online (Sandbox Code Playgroud)
谢谢。鲁胡尔
归档时间: |
|
查看次数: |
114475 次 |
最近记录: |