这是我的设置:我有一个带有大量选项卡的TabControl,并且在最后一个选项卡上,我有一个添加到TabPage的UserControl。此UserControl有一个VisibleChanged
事件,该事件应该检查它是否可见,以及是否使用CustomCommand()
显示某些信息。MessageBox改变了一些看起来不相关的东西
void MyUserControl_VisibleChanged(object sender, EventArgs e)
{
//MessageBox.Show("");
UserControl us = sender as UserControl;
if (us.Visible)
{
CustomCommand();
}
//MessageBox.Show("");
}
这里的问题是:这个代码,是将错误地认为用户控件是可见的,当它不是,当它不应该给CustomCommand()
运行。当注释掉的MessageBox
函数在任一位置都未被注释时,UserControl被正确地视为不可见,直到选中TabPage为止。有没有人有任何想法,为什么会这样?
你怎么知道它不可见? CustomCommand是一个长期的操作吗? – LarsTech
“请注意,即使Visible设置为true,如果用户在其他控件背后被遮挡,该控件可能对用户不可见。”来自[MSDN](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.visible(v = vs.110).aspx)。它并不完全解释为什么它可以与消息框一起工作,但它可以解释为什么可见是真实的,即使控件没有显示(即当你的usercontrol的Visible属性被改变时,另一个标签可能正在显示) – derpirscher