我有三种形式:
还有一些课程:
因此,我的表单是使用重新加载的构造函数创建的。其中之一是:
public UserProfile(User user)
{
InitializeComponent();
Show();
pictureBox2.Load("https://d13yacurqjgara.cloudfront.net/users/34535/screenshots/631316/loader_gif.gif");
string aJSON = @client.DownloadString(App.HOST + "api/get_user_articles?e=" + App.EMAIL + "&p=" + App.PASSWORD + "&u=" + user.id.ToString());
articles = JsonConvert.DeserializeObject<List<Article>>(aJSON);
listView1.View = View.LargeIcon;
imageList1.ImageSize = new Size(32, 32);
int i = 0;
foreach (var article in articles)
{
ListViewItem aView = new ListViewItem(article.theme);
string aUrl = client.DownloadString(App.HOST + "api/get_article_image?a=" + article.id);
if (!aUrl.StartsWith("https://"))
{
aUrl = App.HOST + "assets/fallback/default_article-f8a3a64f38bb9b0d777f6722ab64ca0c.png";
}
byte[] imageData = client.DownloadData(aUrl);
MemoryStream stream = new MemoryStream(imageData);
Image img = Image.FromStream(stream);
stream.Close();
imageList1.Images.Add(img);
aView.ImageIndex = i;
listView1.Items.Add(aView);
i++;
}
}
此代码正在从远程服务器加载图像和文章。这是一个非常长期的过程。我需要在窗口显示和窗口完全加载之间创建一些延迟加载效果。在此之前,我尝试在表单顶部创建PictureBox
,并在完成加载后将其发送到底部。但它不起作用,因为下载数据时表单处于睡眠模式。请写一些问题解决方案!谢谢!
答案 0 :(得分:2)
图片的加载必须在另一个帖子中进行。
您可以使用BackgroundWorker,这是一个教程:http://www.dotnetperls.com/backgroundworker