Климов Александр Петрович
Шрифт:
else s = "файл";
NameForm nameForm =
new NameForm(this, "Переименовать " + s, lvi.Text,
new SetNameDelegate(SetRename));
if (nameForm.ShowDialog = DialogResult.OK) fillList;
listView.Focus;
}
Сначала обрабатывается текущий выделенный элемент. Если пользователь выделил папку, то для формы
nameForm
задается соответствующий заголовок Переименовать папку
. Также из этой формы передается в основную форму новое имя папки или файла с помощью метода Set Rename
, как это показано в листинге 7.17. Листинг 7.17
/// <summary>
/// Метод для переименования папки или файла
/// </summary>
/// <param name="name">Имя папки или файла</param>
public void SetRename(string name) {
ListViewItem lvi = listView.Items[listView.SelectedIndices[0]];
bool isFolder = lvi.ImageIndex == 0;
string itemName = path + lvi.Text;
string destName =
Path.GetDirectoryName(itemName) +
Path.DirectorySeparatorChar.ToString + name;
if (isFolder)
Directory.Move(itemName, destName);
else
File.Move(itemName, destName);
}
После того как будет получена информация о выделенном элементе, он переименовывается. Для реализации команды
Удалить
используется код, приведенный в листинге 7.18. Листинг 7.18
private void deleteMenuItem_Click(object sender,
System.EventArgs e) {
ListViewItem lvi = listView.Items[listView.SelectedIndices[0]];
bool isFolder = lvi.ImageIndex == 0;
string s = "Are you sure you want to delete " + lvi.Text;
if (isFolder)
s += " and all its content";
s += "?";
if (MessageBox.Show(s, this.Text, MessageBoxButtons.YesNo,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) ==
DialogResult.Yes) {
if (isFolder)
Directory.Delete(path + lvi.Text, true);
else
File.Delete(path + lvi.Text);
fillList;
}
Перед удалением папки или файла запрашивается подтверждение действий пользователя. Для создания новой папки используется следующий код, приведенный в листинге 7.19.
Листинг 7.19
private void newFolderMenuItem_Click(object sender, System.EventArgs e) {
Cursor.Current = Cursors.WaitCursor;
ListViewItem lvi = listView.Items[listView.SelectedIndices[0]];
NameForm nameForm = new NameForm(this, "Новая папка", "",
new SetNameDelegate(SetNewName));
if (nameForm.ShowDialog == DialogResult.OK) fillList;
listView.Focus;
}
В результате действия этой функции отображается форма
NameForm
с заголовком Новая папка
. Эта форма также передает информацию в главную форму при помощи метода SetNewName
, который приведен в листинге 7.20. Листинг 7.20
/// <summary>
/// Устанавливает новое имя для папки
/// </summary>
/// <param name="name">Имя для папки</name>
public void SetNewName(string name) {
Directory.CreateDirectory(path + name);
}
Метод создает папку с заданным именем. Как видно, код его чрезвычайно прост.
Код для выполнения команды
Свойства
приведен в листинге 7.21. Листинг 7.21
private void propertiesMenuItem_Click(object sender, System.EventArgs e) {
Cursor.Current = Cursors.WaitCursor;