允许用户在多公司计划中选择和更改图标

本文关键字:选择 计划 图标 公司 许用户 用户 | 更新日期: 2023-09-27 18:33:34

我正在开发一个C#程序,允许用户输入多个公司,并且我正在尝试允许用户为每个公司使用图标(以及任务栏中的公司名称),以帮助他们轻松地在他们之间区分。

到目前为止,我有以下代码,它显示了图标的图片框以确认它是正确的图像,但是当我运行该程序时,它在更改图像 3 或 4 次后崩溃并出现内存不足异常。在阅读了本网站上类似问题的解决方案后,我试图处理图像,但似乎无法使其正常工作:

private void btnBrowse_Click(object sender, EventArgs e)
{
  openFileDialog1.InitialDirectory = "R:''rightsort fulfilment''charity icons";
  openFileDialog1.Title = "Choose an Icon";
  openFileDialog1.FileName = "";
  openFileDialog1.Filter = "Icon Files|*.ico";
  if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
  {
    txtIcon.Text = openFileDialog1.FileName;
    pictureBox1.Image = Image.FromFile(txtIcon.Text);
    pictureBox1.Visible = true;
  }
  else
  {
    txtIcon.Text = "";
    pictureBox1.Visible = false;
  }
}

任何帮助将不胜感激!

允许用户在多公司计划中选择和更改图标

从 IDisposable 继承的图像类。每次用新映像替换 Dispose 方法时都需要调用该方法以释放资源。

但是我不知道这是否是您问题的根源。您还可以尝试运行内存性能分析器,并查看内存分配的位置和确切方式。

我会尝试在图片控件中处理旧图像。像这样:

if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
{
    txtIcon.Text = openFileDialog1.FileName;
    Image oldImage = pictureBox1.Image;
    pictureBox1.Image = Image.FromFile(txtIcon.Text);
    if (oldImage != null)
    {
        oldImage.Dispose();
    }
    pictureBox1.Visible = true;
 }