我有一个带有标签和其他组件,图片框,面板等的表单。当我正在做Form.enabled = false;
时(因为我上面有另一个表单),即使可见性,标签也不会显示组件的设置为true;有什么想法吗?
我没有包含代码,因为我不确定包括什么!
感谢您的帮助!
编辑:在Joel Etherton说完之后,我尝试使用此活动:
private void label1_VisibleChanged(object sender, EventArgs e)
{
label1.Visible = true;
}
这给了我一个StackOverflowException
..也许这是无限尝试覆盖父控件的可见性..我该怎么办?
答案 0 :(得分:1)
检查元素的父对象(并在树上跟进)。通常这是由父设置为Visible = false;
引起的。特定控件的可见性设置仍将注册为true
,但是当实际呈现页面时,它将停止在可见性为false的任何父级别生成控件。
编辑:
首先,您应该找到问题的根本原因。这不是代码问题,而是期望问题。预计控件是可见的,但是您创建了一个无法实现的控件。我认为通过尝试找出导致父控件具有错误可见性的条件会更好。很可能你会发现强制父母的可见性或设计问题存在逻辑问题,你的“可见”控件放在错误的根容器中。但是,如果您只是想强制父母的可见性,您可以使用递归方法执行此操作:
private static void SetAllParentVisibility(bool visible, Control ctrl)
{
ctrl.Visible = visible;
if (ctrl.Parent != null)
SetAllParentVisibility(visible, ctrl.Parent);
}
另外,将上述方法视为伪代码。我没有对其进行测试,可能需要更改类型Control
以便能够适应不同的父类型。