我在Winforms应用程序中有一个TabControl,在其中一个标签页上,我有一个标签,用于告知用户页面上的数据缺陷。当缺陷得到纠正时,我隐藏了标签,并使另一个标签变为可见,表明数据有效。
问题是,当用户切换到另一个选项卡,然后返回时,两个标签都可见。问题似乎是我需要在用户选择选项卡时重建各种元素,并且在我这样做时,更改控件的可见性没有任何效果,我猜测是因为tabpage本身尚未显示。我曾尝试在TabControl的Selected事件和tabpage的Enter事件中进行此操作,但两人都没有工作。
我找了一个合适的事件 - 一个是在标签页变为可见之后,但在它显示给用户之前(或者甚至在显示之后立即显示),但是没有找到一个。
是否有适合设置标签页上控件可见性的事件?或者在显示标签页之前还有其他一些设置可见性的方法吗?
答案 0 :(得分:0)
问题原来是我通过函数调用设置了其中一个标签的可见性,然后将另一个设置为第一个的否定:
label1.Visible = IsValid();
label2.Visible = !label1.Visible;
但是对于this answer,label1.Visible不会仅返回label1上的可见性设置,而是返回label1及其父项的最低可见性。由于标签页不可见,当IsValid()为true时,label1.Visible在内部设置为true但仍返回false。所以label2.Visible也设置为true。显示标签页后,可见性将恢复为内部值,并显示两个标签。
解决方案是将值存储在变量中:
bool IsGood = IsValid();
label1.Visible = IsGood;
label2.Visible = !IsGood;