我添加了一个在开头不可见的标签,但是当我点击构建按钮时,我将标签设置为“正在加载...”,当它完成程序时,我将“完成”但是当我编译代码时我唯一得到的是标签“label2”。 为什么它不想得到我说的文字?
public partial class MDGSelectiveForm : Form
{
EA.Repository modelRepository;
private NeatDiagram.CoreDiagram.MDGForm diagramBuilder;
public MDGSelectiveForm(EA.Repository repository)
{
InitializeComponent();
**this.label2 = new Label();
this.label2.Visible = false;**
this.modelRepository = repository;
}
private void button1_Click(object sender, EventArgs e)
{
**label2.Text = "Loading...";
label2.Visible = true;
label2.Refresh();**
//Creo un'istanza di MDGBuilder
diagramBuilder = new CoreDiagram.MDGForm();
String typeOfDiagram1 = "";
String typeOfDiagram2 = "";
String typeOfDiagram3 = "";
if (checkBox1.Checked)
{
typeOfDiagram1 = checkBox1.Text;
diagramBuilder.createDiagram(typeOfDiagram1, modelRepository);
}
if (checkBox2.Checked)
{
typeOfDiagram2 = checkBox2.Text;
diagramBuilder.createDiagram(typeOfDiagram2, modelRepository);
}
if (checkBox3.Checked)
{
typeOfDiagram3 = checkBox3.Text;
diagramBuilder.createDiagram(typeOfDiagram3, modelRepository);
}
**label2.Text = "Complete";**
**label2.Refresh();**
}
答案 0 :(得分:3)
如果您尝试显示状态,可以使用StatusStrip,或者可以添加带有所需文本的标签,将其可见性设置为false,然后在需要显示消息时将其设置为true
编辑: 回答您的后续问题,因为这不符合评论 -
更改标签后尝试抛出Application.DoEvents()
。这可能会解决它。注意,这不是处理这种情况的最佳方法。如果您要添加此项,因为CreateDiagram
是一个长时间运行的操作,那么您不应该从按钮CreateDiagram
处理程序中调用OnClick
。任何长时间运行的操作都应该在自己的线程中完成。您可以使用BackGroundWorker或Task
或您选择的任何线程来执行操作。从您可以调用到UI的线程来更新标签。更新后,只需在标签上调用Invalidate即可。