C# 如何更改选项卡页上控件的可见性

C# 如何更改选项卡页上控件的可见性,c#,winforms,tabs,C#,Winforms,Tabs,我在Winforms应用程序中有一个TabControl,在其中一个选项卡页面上,我有一个标签,用于通知用户页面上的数据缺陷。当缺陷得到纠正时,我隐藏了标签,并使另一个指示数据有效的标签可见 问题是,当用户切换到另一个选项卡,然后返回时,两个标签都可见。问题似乎是,当用户选择选项卡时,我需要重建各种元素,而在我这样做的时候,更改控件上的可见性没有任何效果,我猜这是因为tabpage本身还不可见。我曾尝试在TabControl的Selected事件和tabpage的Enter事件中执行此操作,但都

我在Winforms应用程序中有一个TabControl,在其中一个选项卡页面上,我有一个标签,用于通知用户页面上的数据缺陷。当缺陷得到纠正时,我隐藏了标签,并使另一个指示数据有效的标签可见

问题是,当用户切换到另一个选项卡,然后返回时,两个标签都可见。问题似乎是,当用户选择选项卡时,我需要重建各种元素,而在我这样做的时候,更改控件上的可见性没有任何效果,我猜这是因为tabpage本身还不可见。我曾尝试在TabControl的Selected事件和tabpage的Enter事件中执行此操作,但都没有成功

我已经寻找了一个合适的事件——一个发生在tabpage可见之后,但在它显示给用户之前(甚至在它显示之后)发生的事件,但没有找到


是否存在适合设置选项卡页上控件可见性的事件?或者在显示选项卡页之前是否有其他方法设置可见性?

问题是,我通过函数调用在其中一个标签上设置可见性,然后将另一个设置为第一个标签的否定:

label1.Visible = IsValid();
label2.Visible = !label1.Visible;
但是per,label1.Visible不会单独返回label1上的可见性设置,而是返回label1及其父对象的最低可见性。由于选项卡页不可见,当IsValid()为true时,label1.visible在内部设置为true,但仍然返回false。因此label2.Visible也被设置为true。显示选项卡页面后,可见性将恢复为其内部值,并显示两个标签

解决方案是将值存储在变量中:

bool IsGood = IsValid();
label1.Visible = IsGood;
label2.Visible = !IsGood;

请发布一个简单的代码来重现这个问题。@RezaAghaei-好吧,当我测试一个简单的代码时,它没有做到。我想我需要在我复杂的应用程序中找出问题的原因。创建一个简单的代码来重现问题的第一个好处就是为您服务。通常,它会帮助你们自己发现问题,或者把你们带到正确的方向,或者至少让你们远离错误的方向。之后,如果简单代码中存在问题,那么该代码将成为其他用户帮助您的良好起点:)