gpt4 book ai didi

C# : List image reset after close app

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:40 24 4
gpt4 key购买 nike

我正在使用 VS2013 开发带有 SQL Server 数据库的 Windows 窗体应用程序。
我在数据库表中有一列来存储图像名称:
enter image description here

在我的应用程序中,我创建了一个按钮来从我的计算机中选择图像并将该图像保存到应用程序启动路径:

private void buttonX1_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Image only. | *.jpg; *.jpeg; *png; *.gif;";
dlg.InitialDirectory = @"E:\";
dlg.Multiselect = false;
string a = null;
if (dlg.ShowDialog() == DialogResult.OK)
{
string[] tmp = dlg.FileNames;
foreach (string i in tmp)
{
FileInfo fi = new FileInfo(i);
string[] xxx = i.Split('\\');
string des = Application.StartupPath + @"\Images\" + xxx[xxx.Length - 1];
string desfolder = Application.StartupPath + @"\Images\";
imagename = xxx[xxx.Length - 1].ToString();
System.IO.Directory.CreateDirectory(desfolder);
File.Delete(des);
imageuploaded.Image = Image.FromFile(dlg.FileName);
//over.
fi.CopyTo(des);
imageList1.Images.Add(imagename, Image.FromFile(des));
//Process.Start("explorer.exe", desfolder);
}
MessageBox.Show("Thành công ");
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}

该代码将从计算机加载图像,保存到启动路径中的文件夹“images”,并将图像也添加到 imagelist1。
之后,我有一个按钮可以将图像名称插入“图像”列(在 SQL 服务器数据库中)。我有这段代码可以为我的网格使用图像列表:

public PrdMan()
{
InitializeComponent();
GridPanel panel = superGridControl1.PrimaryGrid;
GridColumn column = panel.Columns["image"];
column.EditorType = typeof(MyGridImageEditControl);
column.EditorParams = new object[] { imageList1, ImageSizeMode.Zoom };
//superGridControl1.PrimaryGrid.Columns[8].Visible = false;
//superGridControl1.PrimaryGrid.Columns[2].CellStyles = "dd/MM/yyyy";
//styleManager1.ManagerStyle = eStyle.Metro;
//
//this.Location = new Point(0, 0);
//this.Size = Screen.PrimaryScreen.WorkingArea.Size;
}

加载网格的代码:

this.mPhamTableAdapter.Fill(this.beautyMaDataSet.MPham);
this.superGridControl1.PrimaryGrid.DataSource = this.beautyMaDataSet.MPham;

我的问题是:当我加载图像并将其插入数据库的“图像”列时:成功并且网格将显示图像。但是当我关闭应用程序(发布后)或停止调试(在 VS 中)然后重新打开(或再次调试)。网格不会显示我的图像
enter image description here

即使图像仍在文件夹中:
enter image description here
并且 imagelist 在列表中没有图像:
enter image description here

我不知道我的问题是什么。你能支持我怎么做吗:
1/使用 C# 从 PC 添加图像到启动路径的文件夹,并将图像名称保存到 SQL 服务器(将图像绑定(bind)到网格)。
2/将启动路径文件夹中的图像绑定(bind)到图像列表并使用它。
感谢支持。

最佳答案

我感觉到您的代码中存在两个问题,可能其中一些导致了您的问题。

首先,如果您将表格加载到 DataGridView(或其他东西),并使用新图像更新 GridView,但不手动写回数据库,则修改不会保存到数据库。

正如你所说,

After that, I have a button to insert imagename to "Images" column (in SQL server database). I have this code to use imagelist for my grid

我猜你的问题的原因之一可能与这里有关。

其次,您使用对话框选择图像并复制到路径“APP\Images”,并将名称存储到数据库。当用户下次运行您的应用程序时,您将如何处理?加载表格并获取图像名称,并从路径中找到那些图像?请提供相关代码来解决您的问题。

顺便说一句,如果数据库是本地的,离线的DB,而且你不会存储太多的记录,你可以考虑把你的图像原始数据也存储在DB中。 (我知道有些人不推荐这种方式,但在我看来,这也是解决您问题的一种方式。)

关于C# : List image reset after close app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216911/

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