Member 13956894 Ответов: 1

Как переименовать файл, указанный в списке форм C# windows


Я новичок в C#. Я работаю над формой Windows, которая должна делать следующее;
1 - просмотр файлов на локальном диске
2 - разрешить пользователю выбирать файлы
3 - перечислите выбранные файлы в списке
4 - разрешить пользователю ввести новое имя файла и при нажатии кнопки переименовать переименовать выбранный файл в списке.

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

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

public partial class everSupportForm : Form
{
    public everSupportForm()
    {
        InitializeComponent();
    }

    private void buttonSelect_Click(object sender, EventArgs e)
    {


        System.IO.Stream myStream;

        var myDialog = new OpenFileDialog();

        myDialog.InitialDirectory = @"c:\";
        myDialog.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
        //  + "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" //If you want to add filters for browsing only images.
        myDialog.FilterIndex = 1;
        myDialog.RestoreDirectory = true;
        myDialog.Multiselect = true;
        myDialog.Title = "Please Select File(s) to Rename";

        if (myDialog.ShowDialog() == DialogResult.OK)
        {
            foreach (var file in myDialog.FileNames)
            {
               try
                {
                    if ((myStream = myDialog.OpenFile()) != null)
                    {
                        using (myStream)
                        {

                       outputListBox.Items.Add(System.IO.Path.GetFileName(file));

                        }
                    }
                }

                catch (Exception ex)
                {
                 Could not load File specifying the causes 
               MessageBox.Show("Cannot display the File");
                }
            }
        }

    }

    private void buttonExit_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    //buttonRemove method to remove a selected item
    private void buttonRemove_Click(object sender, EventArgs e)
    {
        if (outputListBox.SelectedIndex >=0)
        {
            outputListBox.Items.RemoveAt(outputListBox.SelectedIndex);

        } //End of button remove method
    }

    // buttonClear method to clear the listed images ListBox
    private void buttonClear_Click(object sender, EventArgs e)
    {
        outputListBox.Items.Clear();
    } // End of Clear Method

    private void everSupportForm_Load(object sender, EventArgs e)
    {

    }

    private void buttonRename_Click(object sender, EventArgs e)
    {
        if (outputListBox.SelectedIndex >=0)
        {

            outputListBox.Items[outputListBox.SelectedIndex] = newNametextBox.Text;
        }
        else
        {
            MessageBox.Show("There is no Files in the Above list to be Selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

1 Ответов

Рейтинг:
1

Ravi Bhavnani

Вы только обновляете имя, отображаемое в списке.  Вам нужно позвонить Файл.Подвиньте()[^] для того, чтобы переименовать файл.

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


Member 13956894

Спасибо за ваш ответ. Идея состоит в том, чтобы выбрать файл из списка и переименовать его.
Вы были правы относительно GetFileName. Я обновил эту строку кода, чтобы она была outputListBox.Предметы.Добавить файл);

но мне до сих пор не удалось переименовать файл с помощью этого файла.Метод Move ().
Спасибо

Ravi Bhavnani

Вы указываете правильные параметры для файла.Двигаться()? IOW, являются ли старые и новые имена файлов полностью квалифицированными и действительными?

/Рави

Member 13956894

Большое вам спасибо за ваше замечание

Ravi Bhavnani

Теперь все хорошо? Удалось ли вам заставить переименование работать?

/Рави