Eld*_*lor 3 c# methods winforms
我希望能够使用方法将任何标签的可见性设置为true或false.我有这个代码:
private void Change_Visible(Label toBeChanged)
{
if (toBeChanged.Visible == false)
{
toBeChanged.Visible = true;
}
else
{
toBeChanged.Visible = false;
}
toBeChanged.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
我用以下代码调用此代码:
Change_Visible(myLabel);
//
// Do other things
//
Change_Visible(myLabel);
Run Code Online (Sandbox Code Playgroud)
在我的具体示例中,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;
}
}
Run Code Online (Sandbox Code Playgroud)
我还没有得出任何结论.我自己学习C#并在几周前开始学习,所以也许我错过了一些明显的东西.谢谢你的帮助!
在父项重绘其背景,绘制以前由标签控件绘制的像素之前,标签实际上不会对用户不可见.这不会发生在您的代码中,仅在主线程空闲并重新进入消息循环时才会发生绘制.它不是空闲的,它正在执行那些"其他事情".
解决方法是让父母提前画画:
myLabel.Visible = false;
this.Update();
//
// Do other things
//
myLabel.Visible = true;
Run Code Online (Sandbox Code Playgroud)
运行时间足以需要这样反馈的代码应该在工作线程中运行.使用BackgroundWorker或任务.
| 归档时间: |
|
| 查看次数: |
16252 次 |
| 最近记录: |