gpt4 book ai didi

C# - 如何动态创建进度条

转载 作者:行者123 更新时间:2023-11-30 16:10:41 24 4
gpt4 key购买 nike

我正在尝试开发一个可以同时支持多个上传的小程序。但是,我遇到了一个问题:如果我有一个文件上传,有一个进度条;但是当我上传更多文件时,我不知道如何为每个文件独立创建进度条以及如何在多个上传时自动添加额外的进度条。我将 WebClient 类与 UploadFileAsync 一起使用。

String file 是上传所需的路径,uploadForm 是我将在其中显示进度条和进行上传的 Form

编辑:使其正常运行的最终代码

private void UploadEnProgres(object sender, UploadProgressChangedEventArgs e, String file, ProgressBar nouvelleProgressBar)
{
Console.WriteLine("{0} : {1} octet sur {2} au total. {3} % envoyés...", file, e.BytesSent, e.TotalBytesToSend, e.ProgressPercentage);
nouvelleProgressBar.Value = (int)((e.BytesSent * 100) / e.TotalBytesToSend);
}

private void UploadFini(object sender, UploadFileCompletedEventArgs e, String file, ProgressBar nouvelleProgressBar, TextBox nouvelleTextBox, Int32 hauteur)
{
if ((e.Cancelled) || (e.Error != null))
{
Console.WriteLine("{0} : ERREUR -- {1}", file, e.Error);
return;
}
Console.WriteLine("{0} : upload terminé, statut : ", file, System.Text.Encoding.UTF8.GetString(e.Result));
uploadForm.Controls.Remove(nouvelleProgressBar);
uploadForm.Controls.Remove(nouvelleTextBox);
hauteur = 12;
}

public void HTTPClientUpload(String file)
{
Console.WriteLine("Upload button.");
WebClient clientUpload = new WebClient();
String authInfo;
authInfo = utilisateur + ":" + motDePasse;
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
clientUpload.Headers["Authorization"] = "Basic " + authInfo;

// CODE HTTP UPLOAD

this.hauteur += 22;

ProgressBar nouvelleProgressBar = new ProgressBar();
nouvelleProgressBar.Size = new Size(180, 20);
nouvelleProgressBar.Maximum = 100;
nouvelleProgressBar.Minimum = 0;
nouvelleProgressBar.Location = new Point(258, hauteur);
nouvelleProgressBar.Visible = true;
uploadForm.Controls.Add(nouvelleProgressBar);

TextBox nouvelleTextBox = new TextBox();
nouvelleTextBox.Size = new Size(180, 20);
nouvelleTextBox.Location = new Point(70, hauteur);
nouvelleTextBox.Text = Path.GetFileName(file);
nouvelleTextBox.Enabled = false;
uploadForm.Controls.Add(nouvelleTextBox);

clientUpload.Headers.Add("Chemin", "/" + identifiantAppareil + file.Replace(@"\", "/"));
clientUpload.UploadFileCompleted += new UploadFileCompletedEventHandler((sender, e) => UploadFini(sender, e, Path.GetFileName(file), nouvelleProgressBar, nouvelleTextBox, hauteur));
clientUpload.UploadProgressChanged += new UploadProgressChangedEventHandler((sender, e) => UploadEnProgres(sender, e, Path.GetFileName(file), nouvelleProgressBar));
clientUpload.UploadFileAsync(new Uri(urlServeur, "v1/ul"), file);
}

最佳答案

//Create a new progressbar each time you start an upload in code
var progressbar = new ProgressBar()

//add it to the form
uploadForm.Controls.Add(progressbar );

您需要研究如何对它们进行分组/定位

关于C# - 如何动态创建进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com