gpt4 book ai didi

c# - 用一种方法改变 label.visibility - 为什么它不隐藏?

转载 作者:行者123 更新时间:2023-11-30 15:32:13 25 4
gpt4 key购买 nike

我希望能够使用一种方法将任何标签的可见性设置为 true 或 false。我有这段代码:

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#,几周前才开始学习,所以也许我遗漏了一些明显的东西。感谢您的帮助!

最佳答案

标签实际上不会对用户变得不可见,直到其父级重绘其背景,在标签控件先前绘制的像素上绘制。这不会发生在您的代码中,绘画只会在主线程空闲并重新进入消息循环时发生。它没有闲着,它正在执行那些“其他事情”。

一个解决方法是让 parent 尽早画自己:

myLabel.Visible = false;
this.Update();
//
// Do other things
//
myLabel.Visible = true;

运行时间长到需要像这样的反馈的代码应该在工作线程中运行。使用 BackgroundWorker 或任务。

关于c# - 用一种方法改变 label.visibility - 为什么它不隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19470102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com