填写状态表格C#

时间:2012-07-11 17:13:16

标签: c# forms complete

我添加了一个在开头不可见的标签,但是当我点击构建按钮时,我将标签设置为“正在加载...”,当它完成程序时,我将“完成”但是当我编译代码时我唯一得到的是标签“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();**


    }

1 个答案:

答案 0 :(得分:3)

如果您尝试显示状态,可以使用StatusStrip,或者可以添加带有所需文本的标签,将其可见性设置为false,然后在需要显示消息时将其设置为true

编辑: 回答您的后续问题,因为这不符合评论 -

更改标签后尝试抛出Application.DoEvents()。这可能会解决它。注意,这不是处理这种情况的最佳方法。如果您要添加此项,因为CreateDiagram是一个长时间运行的操作,那么您不应该从按钮CreateDiagram处理程序中调用OnClick。任何长时间运行的操作都应该在自己的线程中完成。您可以使用BackGroundWorkerTask或您选择的任何线程来执行操作。从您可以调用到UI的线程来更新标签。更新后,只需在标签上调用Invalidate即可。