属性真棒。但是是否有可能创建一个 C# 属性类,当它被标记时,可以使您的应用程序最小化到系统托盘?
从技术上讲,该属性需要放在主窗体的类上。一旦用户单击 X 按钮,该表单不应终止,而应最小化到任务栏。最小化的图标也应该在属性中指定。
这在技术上可行吗?我找不到有关从放置在该类上的属性覆盖类代码的任何信息。(您至少需要覆盖一种方法以使其最小化到托盘。)
属性真棒。但是是否有可能创建一个 C# 属性类,当它被标记时,可以使您的应用程序最小化到系统托盘?
从技术上讲,该属性需要放在主窗体的类上。一旦用户单击 X 按钮,该表单不应终止,而应最小化到任务栏。最小化的图标也应该在属性中指定。
这在技术上可行吗?我找不到有关从放置在该类上的属性覆盖类代码的任何信息。(您至少需要覆盖一种方法以使其最小化到托盘。)
为什么不这样做:
class TrayForm : Form
{
NotifyIcon notifyIcon = new NotifyIcon();
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (e.CloseReason != CloseReason.WindowsShutDown && e.CloseReason != CloseReason.ApplicationExitCall)
{
e.Cancel = true;
this.Hide();
this.notifyIcon.Visible = true;
}
base.OnFormClosing(e);
}
protected override void OnSizeChanged(EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon.Visible = true;
}
base.OnSizeChanged(e);
}
}
这可以通过表单继承而不是属性更容易实现,仍然需要在运行时解释属性才能达到预期的效果。
通过继承,您只需将类设置为您喜欢的行为方式,并且本质上具有选择加入或选择退出的能力(甚至使用属性来这样做)。
这当然是可能的,但我建议覆盖 form close() 方法并简单地在其中放置一些最小化代码。对于未来的开发人员来说,它简单、合乎逻辑且易于遵循。
有关如何实现此目的的一些示例代码位于:
http://www.dreamincode.net/code/snippet2660.htm
和
Form
普通班是不可能的。但是可以创建一个自己的类来继承Form
并支持这样的属性。但这只会使事情变得不必要的复杂,MinimizeToTray
向该类添加一个属性可能会更好。
(如 PhilipW 提供的示例,但添加了一个属性来控制行为)