C# 绑定Datagridview时显示进度条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 绑定Datagridview时显示进度条相关的知识,希望对你有一定的参考价值。

我datagridview 是用Dataset通过表直接绑定的。没有将表通过循环来绑定到datagridview 。这个时候进度条怎么真实显示绑定进度
dataGridView1.DataSource = mydt; mydt为datatable 我是通过表直接绑定,我想在绑定的同时进度条也同时根据比例进行显示。

创建一个模板列,然后用进度条控件,进度条的数据格式是0~1的浮点吧,数据库里格式别错了 参考技术A 数据量有多大追问

有上万。在用表直接绑定到datagridview时进度条怎么也同时真实的进行

MATLAB:保存文件时显示进度条?

【中文标题】MATLAB:保存文件时显示进度条?【英文标题】:MATLAB: Show a progress bar when saving file? 【发布时间】:2016-11-04 02:35:45 【问题描述】:

我有一个 MATLAB GUI(在 GUIDE 中开发),我让用户可以选择保存某些数据结构变量(作为 .mat 文件)。但是,这是一个大的 .mat 文件,保存该文件可能需要一分钟。如果没有任何进度指示,我无法告诉用户何时保存文件(允许他们在 GUI 中执行其他操作)。有没有办法创建一个与保存功能的进度相关联的等待栏?任何帮助,将不胜感激!

【问题讨论】:

无法在 MATLAB 中监控保存操作的进度。最好的办法是弹出一个对话框,告诉他们正在保存并在完成后删除对话框。 @Suever 感谢您的及时回复!那么我怎么知道 save 函数何时完成了文件的保存呢? 【参考方案1】:

您无法在 MATLAB 中监控 save 命令的进度。这是因为 MATLAB 不会在另一个线程中执行保存操作,而是使用程序的主线程,这会阻止您在保存文件时执行任何操作。

您可以提供一个对话框,告诉用户正在进行保存,并在保存完成后将其删除。

dlg = msgbox('Save operation in progress...');

save('output.mat');

if ishghandle(dlg)
    delete(dlg);
end

一个潜在的解决方案

如果您真的想保存多个变量并监控进度,可以使用-append 标志到save 并独立附加每个变量。

vars2save = 'a', 'b', 'c', 'd';
outname = 'filename.mat';

hwait = waitbar(0, 'Saving file...');

for k = 1:numel(vars2save)
    if k == 1
        save(outname, vars2savek)
    else
        save(outname, vars2savek, '-append');
    end

    waitbar(k / numel(vars2save), hwait);
end

delete(hwait);

基准

我做了一个基准测试,看看第二种方法如何影响总保存时间。看来使用-append 保存每个变量对性能的影响比预期的要小。这是代码和结果。

function saveperformance

    % Number of variables to save each time through the test
    nVars = round(linspace(1, 200, 20));

    outname = 'filename.mat';

    times1 = zeros(numel(nVars), 1);
    times2 = zeros(numel(nVars), 1);

    for k = 1:numel(nVars)
        % Delete any pre-existing files
        if exist('outname')
            delete(outname)
        end

        % Create variable names
        vars2save = arrayfun(@(x)['x', num2str(x)], 1:nVars(k), 'Uniform', 0);

        % Assign each variable with a random matrix of dimensions 50000 x 2
        for m = 1:numel(vars2save)
            eval([vars2savem, '=rand(50000,2);']);
        end

        % Save all at once
        tic
        save(outname, vars2save:);
        times1(k) = toc;

        delete(outname)

        % Save one at a time using append
        tic
        for m = 1:numel(vars2save)
            if m == 1
                save(outname, vars2savem);
            else
                save(outname, vars2savem, '-append');
            end
        end
        times2(k) = toc;
    end

    % Plot results
    figure
    plot(nVars, [times1, times2])

    legend('All At Once', 'Append')
    xlabel('Number of Variables')
    ylabel('Execution Time (seconds)')
end

【讨论】:

谢谢!没想到这么简单。 @DeeWBee 请务必查看我的更新。如果您对数据使用 -append 选项,我很想知道时间损失是多少。

以上是关于C# 绑定Datagridview时显示进度条的主要内容,如果未能解决你的问题,请参考以下文章

c# datagridview 绑定数据时逐行显示并且有进度条。问题如下:

DataGridView 绑定到已键入的 DataTable 时显示空单元格

Python读取大文件时显示彩色进度条(rich)

Android:如何在将数据加载到 WebView 时显示进度条?

MATLAB:保存文件时显示进度条?

在 SFX 存档提取时显示进度条