【发布时间】:2013-10-28 12:05:28
【问题描述】:
我希望能够使用一种方法将任何标签的可见性设置为真或假。我有这个代码:
private void Change_Visible(Label toBeChanged)
{
if (toBeChanged.Visible == false)
{
toBeChanged.Visible = true;
}
else
{
toBeChanged.Visible = false;
}
toBeChanged.Refresh();
}
我调用此代码:
Change_Visible(myLabel);
//
// Do other things
//
Change_Visible(myLabel);
在我的具体示例中,myLabel 设置为在加载表单时不可见。在第一次调用 Change_Visible 后,它变得可见,但在第二次调用 Change_Visible 后,什么也没有发生。你能帮我让它消失吗?
我已经尝试了一些其他逻辑来寻找解决方案 - 例如:
private void Change_Visible(Label toBeChanged)
{
if (toBeChanged.Visible == false)
{
toBeChanged.Visible = true;
toBeChanged.Refresh();
return;
}
if (toBeChanged.Visible == true)
{
toBeChanged.Visible = false;
toBeChanged.Refresh();
return;
}
}
我还没有得出任何结论。我正在自学 C#,几周前才开始学习,所以也许我遗漏了一些明显的东西。感谢您的帮助!
【问题讨论】:
-
确保在第二次调用 change_visible 后没有阻塞 UI 线程
-
一切似乎都很好——你能介绍更多的上下文吗?当
Label.Visible属性为 set 时,标签实际上会失效,这意味着调用Label.Refresh实际上是多余的。您实际上可以用return toBeChanged.Visible = !toBeChanged.Visible;替换整个方法体。 -
第一次没有显示标签,直到我添加了 Label.Refresh() 行,这就是它存在的原因。