当前位置: 首页 > 知识库问答 >
问题:

无法填充PictureBox

苏华藏
2023-03-14

我被卡住了。我一直在尝试不同的方法将6个头像字符串的结果加载到picturebox控件数组的加载方法中。

这就是我必须迭代(mysql结果集)值字符串到pictureboxes的内容

PictureBox[] avatars = { peer1, peer2, peer3, peer4, peer5, peer6 };

foreach (DataRow row in dt.Rows)
{
   string url = "https://example.com/" + row["avatar"];

   for (int i = 0; i < avatars.Length; i++)
   {
       avatars[i].Load(url);
   }
}

但是每个图片框都显示为白色(空白)。如果我将SQL查询设置为LIMIT 1,我将为每个图片框获得相同的第一个头像。但它不会相应地分配,或者根本不会。

我如何才能循环到我的6个图片框正确的网址?谢谢你们

编辑

我也尝试过这样做,但没有运气

List<string> AvatarList = new List<string>();

PictureBox[] avatars = { peer1, peer2, peer3, peer4, peer5, peer6 };

foreach (DataRow row in dt.Rows)
{
    AvatarList.Add("https://example.com/" + row["avatar"]);
}

for (int i = 0; i < AvatarList.Count; i++)
{
    for (int x = 0; x < avatars.Length; x++)
    {
         avatars[x].Load(AvatarList[i]);
     }
}

PictureBox[] avatars = { peer1, peer2, peer3, peer4, peer5, peer6 };

foreach (var pb in avatars)
{
   foreach (DataRow row in dt.Rows)
   {
        string url = "https://example.com/" + row["avatar"];
        pb.Load(url);
    }
}

已解决

在这种类似的情况下阅读,答案如下

private bool CacheReadAvatars = true; // Image caching?
PictureBox[] avatars = { peer1, peer2, peer3, peer4, peer5, peer6 };

            foreach (DataRow row in dt.Rows)
            {
                if (CacheReadAvatars != false)
                {
                    SaveImage("https://example.com/" + row["avatar"], CachePath + "/peer_" + row["user_id"] + ".jpg");
                    AvatarList.Add(CachePath + "/peer_" + row["user_id"] + ".jpg");
                }
                else
                {
                    AvatarList.Add("https://example.com/" + row["avatar"]);
                }
            }

            for (int i = 0; i < AvatarList.Count; i++)
            {
                if (CacheReadAvatars != false)
                {
                    avatars[i].Image = Image.FromFile(AvatarList[i]);
                }
                else
                {
                    avatars[i].Load(AvatarList[i]);
                }
            }
public void SaveImage(string imageUrl, string filename)
        {
            WebClient client = new WebClient();
            Stream stream = client.OpenRead(imageUrl);
            Bitmap bitmap; bitmap = new Bitmap(stream);

            if (bitmap != null)
            {
                bitmap.Save(filename, ImageFormat.Jpeg);
            }

            stream.Flush();
            stream.Close();
            client.Dispose();
        }

我冒昧地允许图像缓存,以防我想限制HTTP请求、数据使用等。

共有1个答案

国仰岳
2023-03-14

为什么要使用双回路?如果图像的URL是正确的,那么下面的代码应该可以工作。

PictureBox[] avatars = { peer1, peer2, peer3, peer4, peer5, peer6 };

int i = 0;
foreach (DataRow row in dt.Rows)
{
    string url = "https://example.com/" + row["avatar"];
    avatars[i].Load(url);
    i++;
}
 类似资料:
  • 下面是Verzeichnisdaten类: 此代码属于Verzeichnisdaten。上面有更多的代码,但现在不相关了。

  • 问题内容: 在使用Hibernate的Spring MVC应用程序中,无法将在ManyToMany关系中连接两个实体的列表正确填充。实体是和。该实体有一个属性,它是名单的实体,而这是不正确填充。有人可以帮我弄清楚如何修正我的代码,以便实体开始正确填充吗? 未能正确填充ArrayList的控制器方法的代码如下: 前面代码中的命令输出以下内容: 从上面的输出可以看到,只有一个对象大于0 。尽管事实是每

  • 我试过使用和不使用。表和已成功创建,并包含迁移(insert-books)。 迁移是通过的,因为如果我添加了一个无效的insert(到一些不存在的表中),我会得到异常: 如何使用LiquiBase用insert-books.sql脚本中的数据填充数据库?

  • 我在填充Tableview时遇到问题。当我运行此代码时,我的tableview具有与观察列表相同数量的记录,但什么都不可见。 有什么想法吗?donť理解一些类似cellvalueProperty的东西。这对我的示例有用吗?谢谢

  • 我无法为第二个请求获取ModelAtort。我的第一个请求是initForm()方法,我准备了命令对象并能够在jsp中显示命令。 通过initForm()我正在填充命令,并在执行ajax调用时在editForm中填充所需的命令。 这是我的Spring表格 我的ajax请求: 在editStudentDetails()方法中,我有方法ajax调用来调用控制器的editForm()。 这是我的控制器:

  • 我无法填充从场景生成器创建的JavaFX组合框。虽然我已经搜索过了,但我找不到解决这个错误的方法。 下面的例子都不管用。 帮助将不胜感激。