2012-09-25 55 views
4

我正在创建一个Windows应用程序。在这个应用程序中,我使用了notifyicon,并将我的应用程序最小化为系统托盘。在按钮点击的代码中,我在后台处理一些东西并每2秒返回一个整数值。我需要在Notifyicon上显示价值。在windows应用程序中显示notifyicon图标上的文本

任何人都可以帮我吗?

回答

9

尝试NotifyIcon.ShowBalloonTip方法:

显示气球尖端具有指定标题,文本和图标在任务栏为指定的时间段。

void Form1_DoubleClick(object sender, EventArgs e) 
{ 
    notifyIcon1.Visible = true; 
    notifyIcon1.ShowBalloonTip(20000, "Information", "This is the text", 
     ToolTipIcon.Info); 
} 

如果你想改变托盘图标,创建一个图标按需并将其设置为NotifyIcon.Icon

创建图标,你可以使用此代码(更新):

public static Icon GetIcon(string text) 
{ 
    Bitmap bitmap = new Bitmap(32, 32); 

    Icon icon = SmsSender.Properties.Resources.notifficationicon; 
    System.Drawing.Font drawFont = new System.Drawing.Font("Calibri", 16, FontStyle.Bold); 
    System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White); 

    System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap); 

    graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel; 
    graphics.DrawIcon(icon, 0, 0);    
    graphics.DrawString(text, drawFont, drawBrush, 1, 2);   
    Icon createdIcon = Icon.FromHandle(bitmap.GetHicon()); 

    drawFont.Dispose(); 
    drawBrush.Dispose(); 
    graphics.Dispose(); 
    bitmap.Dispose(); 

    return createdIcon; 
} 

看到这个项目:

+0

我已经在使用,但问题是如果我使用这个,我必须每秒钟显示气球。我认为最好在通知图标上显示相同的(不像34) –

+0

在这一行中Icon Icon = new Icon();它说,System.Drawing.Icon不包含一个构造函数,需要0个参数' –

+0

我将图标文件添加到资源文件夹并完成此操作。 'Icon icon = ProjectName.Properties.Resources.notifficationicon;' –

2

试试这个。希望这可以帮助你。

http://www.dotnetperls.com/notifyicon

http://www.codeproject.com/Articles/37451/Display-Progress-and-Overlay-Icons-for-Multiple-Vi

而且最你可以做一些这样的事情。

Graphics canvas; 
Bitmap iconBitmap = new Bitmap(16, 16); 
canvas = Graphics.FromImage(iconBitmap); 

canvas.DrawIcon(YourProject.Resources.YourIcon, 0, 0); 

StringFormat format = new StringFormat(); 
format.Alignment = StringAlignment.Center; 

canvas.DrawString(
    "2", 
    new Font("Calibri", 8, FontStyle.Bold), 
    new SolidBrush(Color.FromArgb(40, 40, 40)), 
    new RectangleF(0, 3, 16, 13), 
    format 
); 

notifyIcon.Icon = Icon.FromHandle(iconBitmap.GetHicon()); 
+0

我已经看到这个,但是每秒执行一次这个总代码将会是程序 –

+0

看代码项目文章的一个负担。你使用Windows 7吗? – JSJ

+0

不,我使用的是Windows XP,但最终的应用程序可能会用在赢7 –

相关问题