如何刷新标签文字?

时间:2016-11-03 15:42:50

标签: c# winforms

我有一个用于刷新标签文本的类:

class GUIDisplayer:IOutputter
    {
        Label label;
        public GUIDisplayer(Label label)
        {
            this.label = label;
        }

        public void display(string text)
        {
            label.Text = text;
            label.Refresh();
        }

    }

此类的一个实例被传递到我的Windows窗体应用程序中的另一个类,我在其中使用它来显示For循环期间的进度:

public class BatchConverter
    {

        IOutputter outputter;

        public BatchConverter(IOutputter outputter)
        {
            this.outputter = outputter;
        }

        public bool convertFiles(List<FileTransferData> fileTransferList,bool overwrite=true)
        {

            for (int index = 0; index < fileTransferList.Count; index++)
            {
                FileTransferData file = fileTransferList[index];
                outputter.display(index + "/" + fileTransferList.Count + ": " + file.sourcePath);
                //do some file conversion operations
            }
            return true;

        }
    }

convertFiles()正在运行时,标签会在第一次调用outputter.display()时更新,但随后该应用只会冻结蓝色忙圈,直到完成For循环。当我使用outputter.display()实现IOutputter.display()方法时,For循环使用Console.WriteLine()调用成功写入输出设备。我希望每次For循环迭代时标签中的文本都会刷新;我有办法做到这一点吗?

0 个答案:

没有答案