コード例 #1
0
        private void DoDelete()
        {
            if (_list.SelectedItems.Count != 1)
            {
                return;
            }
            var lvi  = _list.SelectedItems[0];
            var name = lvi.Text;
            var type = (NotebookItemType)Enum.Parse(typeof(NotebookItemType), lvi.Group.Name);

            // can't delete tables or views if an operation is in progress
            bool isTableOrView = type == NotebookItemType.Table || type == NotebookItemType.View;

            if (isTableOrView && _operationInProgress)
            {
                MessageForm.ShowError(_mainForm,
                                      "Delete Item",
                                      "Cannot delete tables or views while an operation is in progress.",
                                      "Please wait until the current operation finishes, and then try again.");
                return;
            }

            var deleteBtn = "&Delete";
            var d         = new MessageForm {
                Title   = "Delete Item",
                Message = $"Are you sure you want to delete \"{name}\"?",
                Buttons = new[] { deleteBtn, "Cancel" },
                Icon    = Resources.Warning32
            };

            if (d.ShowDialog(this) != deleteBtn)
            {
                return;
            }

            var item = new NotebookItem(type, name);

            _manager.CloseItem(item);

            new WaitForm("Delete", "Deleting the selected item...", () => {
                _manager.DeleteItem(item);
            }).ShowDialogAndDispose(this);

            _manager.Rescan(notebookItemsOnly: !isTableOrView);
        }