You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Form的Icon为Nothing或使用默认图标?

判断WinForms窗体是否使用默认图标的方法

你遇到的问题很常见——WinForms里的Form.Icon属性在未手动设置时,并不会是Nothing,而是自动加载了系统或应用程序的默认图标,所以直接用Is Nothing判断肯定无效。下面给你几种可行的解决方案:

方案一:对比默认窗体图标

新建一个未做任何修改的空白Form,它的Icon就是系统默认的窗体图标,我们可以拿它和当前窗体的Icon做对比:

' 获取默认窗体图标(新建一个临时Form来获取)
Using tempForm As New Form()
    Dim defaultIcon As Icon = tempForm.Icon
    ' 对比当前窗体的Icon是否与默认一致
    If Me.Icon.Equals(defaultIcon) Then
        MsgBox("当前使用的是默认图标")
    Else
        MsgBox("当前使用的是自定义图标")
    End If
End Using

⚠️ 注意:如果你的应用程序本身设置了自定义的默认图标(比如在项目属性里指定了图标),那这个临时Form的Icon会是你项目设置的那个,这也符合“默认图标”的预期。

方案二:跟踪是否手动设置过Icon

如果你需要严格区分“从未设置过Icon”和“手动设置了和默认一样的Icon”,可以通过自定义属性来跟踪状态:

' 在你的Form类里添加私有变量和自定义属性
Private _isIconManuallySet As Boolean = False

Public Property FormIcon As Icon
    Get
        Return MyBase.Icon
    End Get
    Set(value As Icon)
        MyBase.Icon = value
        _isIconManuallySet = True
    End Set
End Property

' 判断时使用这个变量
If _isIconManuallySet Then
    MsgBox("图标是手动设置的(即使和默认一样)")
Else
    MsgBox("使用的是默认图标")
End If

之后所有设置图标的操作都通过FormIcon属性来做,这样就能精准判断是否是用户主动设置的图标。

方案三:对比应用程序默认图标

如果你的应用程序在项目中指定了默认图标,可以直接提取应用程序的关联图标来对比:

Dim appDefaultIcon As Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath)
If Me.Icon.Equals(appDefaultIcon) Then
    MsgBox("使用的是应用程序默认图标")
Else
    MsgBox("使用的是自定义图标")
End If

这种方法适合你想确认窗体是否用了项目打包时指定的默认图标场景。


内容的提问来源于stack exchange,提问作者Simos Sigma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:54:56