怎么实现动态设置控件可用性和可见性
1个回答
展开全部
没有一个 Windows API 或 CLR 自带函数能完成题主的要求。
折衷方案:
1、如果该控件被其他窗口覆盖了,那么该控件所在窗口一定不是激活窗体(MDI 父窗体除外)。那么先用 GetForegroundWindow、GetActiveWindow 之类的API (MDI 子窗体直接有 Actived 属性)判断控件所在窗体是否是激活窗体。
2、如果控件所在窗口确实为激活窗体,且存在多个 TabPage,那么可以在 TabControl 的 SelectedIndexChanged 事件中设置一个变量,判断被激活的的 TabPage 是否是控件所在的 TabPage。
此种方法存在一定不足,即当前激活窗体没有遮住控件,但有一个非激活窗体遮住控件了,在第一步中不会被判断出。因为 Windows 没开放 Z 序管理的相关 API,所以也没办法知道究竟有多少个窗口处在控件所在窗口的 Z 序前面。
折衷方案:
1、如果该控件被其他窗口覆盖了,那么该控件所在窗口一定不是激活窗体(MDI 父窗体除外)。那么先用 GetForegroundWindow、GetActiveWindow 之类的API (MDI 子窗体直接有 Actived 属性)判断控件所在窗体是否是激活窗体。
2、如果控件所在窗口确实为激活窗体,且存在多个 TabPage,那么可以在 TabControl 的 SelectedIndexChanged 事件中设置一个变量,判断被激活的的 TabPage 是否是控件所在的 TabPage。
此种方法存在一定不足,即当前激活窗体没有遮住控件,但有一个非激活窗体遮住控件了,在第一步中不会被判断出。因为 Windows 没开放 Z 序管理的相关 API,所以也没办法知道究竟有多少个窗口处在控件所在窗口的 Z 序前面。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询