Suren97 Ответов: 1

C# Как удалить предыдущее изображение из папки после установки нового изображения


У меня есть форма, где я могу редактировать настройки своей учетной записи` Имя,фамилия,логин,пароль, а также изображение.Мне нужно, когда я выбираю изображение, а затем нажимаю на кнопку Сохранить, предыдущее изображение должно быть удалено из папки.Как я могу это сделать?
Это форма, в которой я редактирую настройки[^]
Это учетная запись Пользователя[^]

Что я уже пробовал:

 // This is Save button click
private void bunifuImageButton1_Click(object sender, EventArgs e)
        {
            using (var context = new Suren_BankEntities())
            {
                
                User founded = context.Users.Find(Session.UserId);
                if(metroTextBox1.Text != String.Empty)
                {
                    founded.Name = metroTextBox1.Text;
                }
                if (metroTextBox2.Text != String.Empty)
                {
                    founded.Surname = metroTextBox2.Text;
                }
                if (metroComboBox1.Text != String.Empty)
                {
                    founded.Country = metroComboBox1.Text;
                }
                if (metroTextBox7.Text != String.Empty)
                {
                    founded.CardNumber = int.Parse(metroTextBox7.Text);
                }
                if (metroTextBox5.Text != String.Empty)
                {
                    founded.Login = metroTextBox5.Text;
                }
                if (metroTextBox6.Text != String.Empty)
                {
                    founded.Password = metroTextBox6.Text;
                }
                if (pictureBox1.Image != null)
                {
                    founded.Photo = this.n;
                }
                context.SaveChanges();
                MessageBox.Show("Settings has edited!");
                if (us == null)
                {
                    us = new UserSettings();
                    us.Dock = DockStyle.Fill;
                    Profile.Instance.FormContainer.Controls.Add(us);
                }
                us.BringToFront();
            }
        }

//This is Upload button click
 private void bunifuImageButton6_Click(object sender, EventArgs e)
        {
            
            this.op = new OpenFileDialog();
            if (op.ShowDialog() == DialogResult.OK)
            {
                if (Directory.Exists("img"))
                {
                    try
                    {
                        long random_number = DateTimeOffset.Now.ToUnixTimeMilliseconds();
                        File.Copy(op.FileName, @"img\" + random_number + op.SafeFileName);
                        pictureBox1.Image = new Bitmap(op.FileName);
                        this.n = random_number + op.SafeFileName;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }

//Constructor of User Settings
 public UserSettings()
        {
            DateTime now = DateTime.Today;
            InitializeComponent();
            using (var ctx = new Suren_BankEntities())
            {
                this.user = ctx.Users.Find(Session.UserId);
                label3.Text = "Name: " + user.Name;
                label4.Text = "Surname: " + user.Surname;
                label5.Text = "Born in " + user.Country;
                label6.Text = "Age: " + (now.Year - user.Date.Year) + " years old";
                label7.Text = "Card Number is: " + user.CardNumber;
                label13.Text = "AMD: " + user.AMD;
                label12.Text = "RUR: " + user.RUR;
                label11.Text = "USD: " + user.USD;
                label8.Text = "Login: " + user.Login;
                label9.Text = "Password: " + user.Password;
                if (File.Exists(@"img\" + user.Photo))
                {
                    pictureBox2.Image = new Bitmap(@"img\" + user.Photo);
                }
                else
                {
                    pictureBox2.Image = new Bitmap(@"img\default.png");
                }
            }
        }

1 Ответов

Рейтинг:
0

Suren97

Я знаю этот метод, но не знаю, где его написать, чтобы он удалил предыдущее изображение

Richard MacCutchan

Серьезно? Вы не понимаете логики вашей собственной программы?

Suren97

Это удаление выбранного изображения, ни предыдущие

Richard MacCutchan

Затем поставьте delete перед сохранением нового изображения.

Suren97

Это дает ошибку http://prntscr.com/jjud26

Suren97

http://prntscr.com/jjud75

Richard MacCutchan

Какая ошибка? Пожалуйста, разместите соответствующую информацию здесь, на форуме.

Suren97

я отправил скриншоты

Richard MacCutchan

Пожалуйста, покажите, какую ошибку вы получаете, и разместите фактические данные здесь. Не используйте скриншоты удаленного сайта, они вам не помогут.

Suren97

если (имя picturebox1.Изображения != нуль)
{
Файл.Удалить(@"img\" + ).Фотография);
основанный.Фото = это.n;
}

Suren97

Процесс не может получить доступ к файлу C:\Users\User... потому что он используется другим процессом

Richard MacCutchan

Вам нужно выяснить, кто имеет доступ к файлу, и освободить его.

Suren97

но я правильно написал код?

Richard MacCutchan

Я не могу сказать, потому что у меня нет доступа к вашей системе. Вам нужно сделать некоторую отладку. Вполне возможно, что образ используется системой, поэтому вы не можете удалить его, пока он не будет выпущен, когда новый образ будет подключен к тому, для чего вы его используете.