C#里如何实现一个程序运行以后只显示一个系统托盘图标,右击它时会有菜单显示. 这儿有一个简单的例子http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=10200&pageNO=1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、程序的主窗口WindowSate设置为minimized;2、添加一个NotifyIcon组件设置其Icon为你要显示的图标,ContextMenu为右键显示的菜单;3、实现ContextMenu的功能4、最小化时设置主窗口的showintaskbar为false;完成。 this.contextMenu1.Popup += new EventHandler(ContextMenuPopup);private void CreateContextMenu() { this.contextMenu1.MenuItems.Clear(); // First element is the category name MenuItem menuItem = new MenuItem(counterData.CategoryName, new EventHandler(CategoryClick)); PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories(); ArrayList items = new ArrayList(); PerformanceCounterCategory currentCategory = null; foreach (PerformanceCounterCategory category in categories) { MenuItemCategory subItem = new MenuItemCategory(category, counterData.InstanceName, new EventHandler(CategoryClick)); if (category.CategoryName == counterData.CategoryName) { subItem.Checked = true; currentCategory = category; } items.Add(subItem); } items.Sort(); foreach (MenuItemCategory item in items) { menuItem.MenuItems.Add(item); } contextMenu1.MenuItems.Add(menuItem); // Next, show the counters for that category menuItem = new MenuItem(counterData.CounterName); MenuItem instanceItem = new MenuItem(counterData.InstanceName); items.Clear(); if (currentCategory != null) { try { PerformanceCounter[] counters = currentCategory.GetCounters(counterData.InstanceName); foreach (PerformanceCounter counter in counters) { MenuItem subItem = new MenuItem(counter.CounterName, new EventHandler(CounterClick)); menuItem.MenuItems.Add(subItem); } } catch (InvalidOperationException) { } string[] instanceNames = currentCategory.GetInstanceNames(); foreach (string name in instanceNames) { MenuItem subItem = new MenuItem(name, new EventHandler(InstanceClick)); instanceItem.MenuItems.Add(subItem); } } contextMenu1.MenuItems.Add(menuItem); contextMenu1.MenuItems.Add(instanceItem); contextMenu1.MenuItems.Add(new MenuItem("Exit", new EventHandler(ExitClick))); } private void ContextMenuPopup(object sender, EventArgs args) { CreateContextMenu(); } 你看这个例子就可以啦;http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=10200&pageNO=1以VC#下作托盘程序很容易的。如果不可能隐藏form的话(如onload中调用this.Hide()),你就以用一个timer来触发调用this.Hide()就可以只显示托盘啦。 基本同意楼上的,其实设计时将form的visible属性设置成false就可以了,在托盘的菜单中充分使用this.hide() this.show()就可以了 哪要这么复杂,在程序中加如一个托盘控件,设置好图标,将主窗口的visible属性设置为flase. 加一个NotifyIcon,将Form的Visible属性设为false。添加一个ContextMenu,在NotifyIcon的属性ContextMenu中选择要使用的菜单就行了 yqdeng(享受生活每一天) , BruceJiang(BruceJiang yqdeng(享受生活每一天) , BruceJiang(BruceJiang你们实际做过吗?将Form的Visible属性设为false并不就能一开始就隐藏的(主窗体)。 C#中TeeChart添加曲线问题 C# 求助 联动如何实现 关于checkedListBox1点取在另一个窗体显示的问题 属性的用法带有[ ]是怎么回事 一个关于C#的简单问题 (密码登陆问题)请问当在文本框中输入一个ID后,如何在另一个文本框中自动显示出灰色的不可更改的人名? 怎么实现图片的任意方向.任意角度的旋转? 散分,模块化和面向对象讨论!!! 模拟鼠标循环点击的问题 在Csharp中,怎样计算字符串表达式的值。 帮帮我这个初学者 Wrox , 现在书店里一些标有Wrox 标志的书非常烂,希望大家不要买
2、添加一个NotifyIcon组件设置其Icon为你要显示的图标,ContextMenu为右键显示的菜单;
3、实现ContextMenu的功能
4、最小化时设置主窗口的showintaskbar为false;
完成。
private void CreateContextMenu()
{
this.contextMenu1.MenuItems.Clear(); // First element is the category name
MenuItem menuItem = new MenuItem(counterData.CategoryName, new EventHandler(CategoryClick));
PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories(); ArrayList items = new ArrayList();
PerformanceCounterCategory currentCategory = null;
foreach (PerformanceCounterCategory category in categories)
{
MenuItemCategory subItem = new MenuItemCategory(category, counterData.InstanceName, new EventHandler(CategoryClick));
if (category.CategoryName == counterData.CategoryName)
{
subItem.Checked = true;
currentCategory = category;
}
items.Add(subItem);
}
items.Sort(); foreach (MenuItemCategory item in items)
{
menuItem.MenuItems.Add(item);
}
contextMenu1.MenuItems.Add(menuItem); // Next, show the counters for that category
menuItem = new MenuItem(counterData.CounterName); MenuItem instanceItem = new MenuItem(counterData.InstanceName);
items.Clear(); if (currentCategory != null)
{
try
{
PerformanceCounter[] counters = currentCategory.GetCounters(counterData.InstanceName); foreach (PerformanceCounter counter in counters)
{
MenuItem subItem = new MenuItem(counter.CounterName, new EventHandler(CounterClick));
menuItem.MenuItems.Add(subItem);
}
}
catch (InvalidOperationException)
{ } string[] instanceNames = currentCategory.GetInstanceNames(); foreach (string name in instanceNames)
{
MenuItem subItem = new MenuItem(name, new EventHandler(InstanceClick));
instanceItem.MenuItems.Add(subItem);
}
}
contextMenu1.MenuItems.Add(menuItem);
contextMenu1.MenuItems.Add(instanceItem);
contextMenu1.MenuItems.Add(new MenuItem("Exit", new EventHandler(ExitClick)));
} private void ContextMenuPopup(object sender, EventArgs args)
{
CreateContextMenu(); }
http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=10200&pageNO=1以VC#下作托盘程序很容易的。
如果不可能隐藏form的话(如onload中调用this.Hide()),你就以用一个timer来触发调用this.Hide()就可以只显示托盘啦。
你们实际做过吗?将Form的Visible属性设为false并不就能一开始就隐藏的(主窗体)。