允许用户在多公司计划中选择和更改图标
本文关键字:选择 计划 图标 公司 许用户 用户 | 更新日期: 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;
}