【发布时间】:2009-04-07 10:31:33
【问题描述】:
我有 3 个图标。当我编译应用程序时,我使用第一个图标 - 主应用程序图标。
我在资源中还有另外 2 个图标。
当我显示 MessageBox.Show(...) 时,第一个应用程序图标出现在任务栏中。 出于某种原因,我希望能够在运行时更改主图标。
【问题讨论】:
我有 3 个图标。当我编译应用程序时,我使用第一个图标 - 主应用程序图标。
我在资源中还有另外 2 个图标。
当我显示 MessageBox.Show(...) 时,第一个应用程序图标出现在任务栏中。 出于某种原因,我希望能够在运行时更改主图标。
【问题讨论】:
我不认为这是直截了当的,看看这个article它可能会帮助你。
【讨论】:
您可以通过使用 P/Invoke 调用 Windows MessageBoxIndirect 函数来更改消息框中显示的图标。
【讨论】:
虽然这里已经提到过 P/Invoke - 如果您不想编写自己的 MessageBox,有一篇关于更改图标 http://www.codeproject.com/KB/dialog/MessageBoxIndirectCS.aspx 的好文章。
【讨论】:
System.Drawing .Icon ica= new Icon (Application.StartupPath + "\\" + "my_new_icon.ico");
this.Icon = ica; //This is an Active Form
【讨论】:
我不确定您是否可以更改标准 MessageBox 的图标。您可能必须制作自己的 MessageBox。然后它只是更改标准winform的图标。这已在 MSDN 和可通过 Google 找到的许多页面上广泛记录。
【讨论】:
我很确定标准 MessageBox.Show() 方法不能显示自定义图标(您可以在枚举中指定几个不同的图标,但不能在其中放置任意图标),但是如果您有一个普通的 .NET 表单,只需将“图标”属性设置为您想要的图像即可。在运行时执行此操作时,可能需要在之前和之后进行正常的挂起/恢复布局调用,或者它们可能不需要,我不知道,但在表单上设置属性应该不是一件大事。
【讨论】: