设置默认图像路径

时间:2016-09-28 06:32:44

标签: c# image winforms

如果找不到图像文件或不存在图像文件,如何设置默认图像? 我得到的错误是

enter image description here

因为名称为8813.jgp的文件不存在。我想将其默认设置为1.jpg。我如何检查它是否存在。

我使用此代码

 public void profilepicture()
    {
    DataTable dtprofile = new DataTable();
    DataSet dsprofile = new DataSet();
    string path;
        SqlCommand command = new SqlCommand();
        SqlDataAdapter adapter = new SqlDataAdapter();
        try
        {
            dsprofile.Clear();
            dtprofile.Clear();
            command.Connection = myConnection;
            command.CommandText = "//some query//'";

            myConnection.Open();
            adapter.SelectCommand = command;
            adapter.Fill(dtprofile);
            adapter.Fill(dsprofile);
        }
        catch (Exception ex)
        {
            MessageBox.Show("error" + ex);
            myConnection.Close();
        }

        path = dsprofile.Tables[0].Rows[0][0].ToString() + "\\" + number + ".jpg";
        pictureEdit2.Image = Image.FromFile(path);

        myConnection.Close();
    }

4 个答案:

答案 0 :(得分:2)

您可以使用File.Exists()命名空间中的System.IO检查文件是否存在。

https://msdn.microsoft.com/en-us/library/system.io.file.exists(v=vs.110).aspx

if(File.Exists("filePath"))
{
    // Load file.
}
else
{
    // Load default file.
}

答案 1 :(得分:0)

实际上它非常微不足道!

mValues

答案 2 :(得分:0)

我建议你创建一个单独的方法来获取SQL表,这样你就可以在你需要的每个方法中使用它,然后使用下面的代码为配置文件图片创建一个不同的方法:

public DataTable GetSqlTable(string query)
{
    using (SqlConnection dbConnection = new SqlConnection(@"Data Source={ServerName};Initial Catalog={DB_Name};UID={UserID}; Password={PWD}"))
    {
        dbConnection.Open();
        SqlDataAdapter da = new SqlDataAdapter(query, dbConnection);
        da.SelectCommand.CommandTimeout = 600000; //optional
        try
        {
            DataTable dt = new DataTable();
            da.Fill(dt);
            da.Update(dt);
            dbConnection.Close();
            return dt;
        }
        catch
        {
            dbConnection.Close();
            return null;
        }
    }
}

public void profilepicture()
{
    DataTable dt = GetSqlTable("/* some query */");
    string number = "some value";
    string defaultImg = "defaultImgPath";
    if(dt.Rows.Count > 0)
    {
        string path = dt.Rows[0][0].ToString() + "\\" + number + ".jpg";
        pictureEdit2.Image = Image.FromFile(File.Exists(path) ? path : defaultImg);
    }
    else
    {
        pictureEdit2.Image = Image.FromFile(defaultImg);
    }
}

抱歉我的英文

答案 3 :(得分:0)

独立应用

如果您的应用程序是独立应用程序(仅需要exe而不需要硬盘中的其他文件),则可以在资源文件中添加默认图像并根据需要使用它。堆栈溢出链接说明了如何访问添加到资源文件Load image from resources area of project in C#

中的图像
pictureEdit2.Image = File.Exists(path) ? Image.FromFile(path) : Resources.myImage;

已安装的应用

如果您的应用程序不是独立应用程序,则可以使用Environment.GetFolderPath方法或Application.StartupPath来存储默认图像。

为避免找不到文件异常,您可能需要在代码中使用File.Exists,如下所示

string defaultImagePath = Application.StartupPath + "\\1.jpg";
pictureEdit2.Image = Image.FromFile( File.Exists(path) ? path : defaultImagePath) ;