Access TabControl隐藏页面后点击时其他页面前景色异常变更问题
Access TabControl 隐藏页面后样式异常的修复方案
你遇到的是Access TabControl的常见样式缓存Bug:动态隐藏/显示页面后,控件的选中状态样式未正确刷新,导致所有页面前景色被错误覆盖为按下状态的颜色,与背景色冲突无法识别文本。
以下是几种可行的修复方法:
方法1:强制刷新TabControl
修改现有代码,在设置页面可见性后调用Refresh方法触发控件重绘,重置样式缓存:
If DLookup("Purchased", "ItemCategoryT", "ItemCatID = " & Me.ItemCategory) = True Then Me.pgPurchaseInfo.Visible = True Else Me.pgPurchaseInfo.Visible = False End If ' 强制刷新TabControl以重置样式 Me.tbIMD.Refresh
方法2:手动重置选中页面样式
如果Refresh无效,直接重新设置当前选中页面的样式属性,覆盖异常值:
If DLookup("Purchased", "ItemCategoryT", "ItemCatID = " & Me.ItemCategory) = True Then Me.pgPurchaseInfo.Visible = True Else Me.pgPurchaseInfo.Visible = False End If ' 获取当前选中的页面索引 Dim currentTabIdx As Integer currentTabIdx = Me.tbIMD.Value ' 重置选中页面的默认样式(对应你设置的颜色值) With Me.tbIMD.Pages(currentTabIdx) .BackColor = RGB(96, 76, 120) ' #604C78 .ForeColor = RGB(243, 240, 246) ' #F3F0F6 End With
方法3:改用禁用页面替代隐藏(业务允许时)
若业务场景支持,将页面设置为禁用而非隐藏,可规避样式缓存问题:
If DLookup("Purchased", "ItemCategoryT", "ItemCatID = " & Me.ItemCategory) = True Then Me.pgPurchaseInfo.Enabled = True Me.pgPurchaseInfo.Visible = True Else Me.pgPurchaseInfo.Enabled = False Me.pgPurchaseInfo.Visible = True ' 保持可见但禁止切换 End If
补充说明
这类问题源于Access对TabControl动态样式的处理缺陷,强制重绘或手动重置样式是最直接的修复手段。若上述方法仍无效,可在表单的Current事件中添加相同的样式重置代码,确保表单加载或记录切换时样式始终正确。
内容的提问来源于stack exchange,提问作者XPCS
相关产品推荐
相关产品推荐

