【问题标题】:progress bar is not showing progress results?进度条不显示进度结果?
【发布时间】:2010-03-25 06:50:43
【问题描述】:

我在我的应用程序中使用了进度条..我的应用程序运行正常,但进度条为空白..它不显示工作进度出了什么问题??

【问题讨论】:

    标签: c# .net progress-bar


    【解决方案1】:

    您可能正在主 GUI 线程中执行工作。这会导致所有 GUI 事件延迟到任务完成。

    改用BackgroundWorker 并使用其ProgressChanged 事件来更新进度条。

    还记得在后台工作人员上将WorkerReportsProgress 设置为true

    【讨论】:

    • 我已经使用 BackgroundWorker 作为进度条..根据运行的应用程序显示结果,但它没有显示任何内容,它只是空白.....
    • @shruti:您能否将您的代码简化为仍然演示您遇到的错误的最简单示例,然后在此处发布您的代码以便我们查看?
    • @shruti:查看我关于 WorkerReportsProgress 的更新。也许这可以解决您的问题。
    • 是的,我已经这样做了..我无法显示代码,因为我正在做多件事并且显示所有内容会非常混乱..我只是使用如果工作正在进行中的逻辑 int percent = (int)((100 *writtenSectors)/burnData.sectorCount); lblStatus.Text = string.Format("进度:{0}%", percent); statusProgressBar.Value = 百分比; else { lblStatus.Text = "进度 0%"; statusProgressBar.Value = 0; }
    【解决方案2】:

    参考 StackOverflow 的这个问题:

    Updating DataGrid From a BackGroundWorker

    我假设您必须使用 Invoke 方法访问 UI 对象。

    如果不尝试使用以下方法(在拥有控件底层窗口句柄的线程上执行指定的委托,并使用指定的参数列表。):

    //In Form.Designer.cs

    ProgressBar progressBar= new ProgressBar ();

    //In code behind under Background worker method ProgressVlaueSetter SetProgressValueDel = SetProgressValue;
    if (progressBar.InvokeRequired) {
    progressBar.Invoke(SetProgressValueDel , 20); }

    private delegate void ProgressVlaueSetter (intvalue);

    //Set method invoked by background thread private void SetProgressValue(intvalue) { progressBar.Value= value; }

    【讨论】:

      【解决方案3】:

      兼容的操作系统和环境是进度条工作的先决条件,因为在计算机显示器上绘制扩展条或块的方法并非在所有平台上都兼容。进度条类型受到保护和监管,并且可能是可许可的,但不会在国家、州、省甚至城市的任何地方运行,除非特定类型的进度指示是合法的。将代码或应用程序移动到不同的计算机类型或主机系统可能会遇到其他功能的类似问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-10
        • 2016-09-13
        • 1970-01-01
        相关资源
        最近更新 更多