怎么实现动态设置控件可用性和可见性
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是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询