【问题标题】:WinSCP update C# progress barWinSCP更新C#进度条
【发布时间】:2015-04-22 13:58:00
【问题描述】:

我无法知道在 C# 中使用 WinSCP .NET 程序集触发 FileTransferProgressEventArgs 事件时发送的文件的百分比。

FileProgress 仅返回 01,或者我不理解的文档中所说的 (0-1)。我需要知道发送了多少字节的文件,而不是我不明白的 0,1。我知道 CPS 是每秒字节数,但我需要更多变量。

我增加进度条的方法如下 void

SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
    progressBar.Increment((int)e.FileProgress);
} 

它的 e.FileProgresse.CPS 我认为可以提供帮助,但似乎我错过了一些东西。

【问题讨论】:

  • 您的事件处理程序的代码是什么样的?
  • 我增加进度条的方法如下 void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e) { progressBar.Increment((int)e.FileProgress); } 它的 e.FileProgress 和 e.CPS 我认为可以提供帮助,但似乎我错过了一些东西

标签: c# progress-bar winscp winscp-net


【解决方案1】:

问题是,您将e.FileProgress 转换为int。正如您已经说过的,文档指定e.FileProgress 的值范围为0 到1,例如0.55。如果将此值转换为整数,则会丢失所有小数位。所以结果值将是 0。 要解决这个问题,您可以将e.FileProgress 乘以 100 将其转换为百分比值。因此您可以得到 0 到 100 之间的值。因此您可以像这样实现您的事件处理程序:

void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e) 
{
    progressBar.Value = (int)(e.FileProgress * 100);
}

您只需确保将进度条的 MinimumMaximum 属性设置为其默认值 0 和 100。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多