События элемента управления "Ссылки"

Стандартный элемент управления "Ссылки" предоставляет возможность подписываться на события вызова настраиваемых команд (CustomizeCommands), которые выбираются из контекстного меню элемента управления "Ссылки". Для подписки на подобные события необходимо знать идентификатор соответствующей команды, которые собраны в статическом классе DocsVision.BackOffice.WinForms.Controls.Commands.ReferenceListView.ReferenceListViewCommandIds (сборка DocsVision.BackOffice.WinForms.dll):

  • ReferenceListViewCommandAddCardFromTemplateId — добавление карточки по шаблону.

  • ReferenceListViewCommandAddCardId — добавление карточки.

  • ReferenceListViewCommandAddDVFolderId — добавление папки Docsvision.

  • ReferenceListViewCommandAddFileFromFileSystemId — добавление файла.

  • ReferenceListViewCommandAddURLId — добавление URL.

  • ReferenceListViewCommandCancelLockFileId — отмена блокировки.

  • ReferenceListViewCommandCopyId — копирование.

  • ReferenceListViewCommandCreateCardId — создание карточки.

  • ReferenceListViewCommandDeleteId — удаление.

  • ReferenceListViewCommandLockFileId — блокировка для работы.

  • ReferenceListViewCommandOpenCardId — открытие карточки.

  • ReferenceListViewCommandOpenFileAsReadOnlyId — открытие файла в режиме чтения.

  • ReferenceListViewCommandOpenFileId — открытие файла в режиме изменения.

  • ReferenceListViewCommandOpenId — открытие карточки.

  • ReferenceListViewCommandRefreshId — обновление.

  • ReferenceListViewCommandScanAndAddId — сканирование и добавление.

  • ReferenceListViewCommandShowDescriptionId — описание.

  • ReferenceListViewCommandShowGroupPanelId — отображение области группировки.

  • ReferenceListViewCommandShowPreviewPanelId — отображение области описания.

  • ReferenceListViewCommandUnlockFileId — отображение области группировки.

Элемент управление "Ссылки" предоставляет единую точку входа для обработки всех этих событий — событие CustomizeCommands. В качестве примера, используем собственный обработчик события CustomizeCommands для обработки команд добавления URL-ссылки и открытия карточки из списка добавленных карточек:

private void Document_CardActivated(System.Object sender, DocsVision.Platform.WinForms.CardActivatedEventArgs e) (1)
{
 ReferenceListView referenceListView = ((ICustomizableControl)CardControl).FindPropertyItem<ReferenceListView>("Свойство1"); (2)

 referenceListView.CustomizeCommands += new EventHandler<ReferenceListViewCustomizeCommandsEventArgs>(ReferenceListView_CustomizeCommands); (3)
}
private void ReferenceListView_CustomizeCommands(object sender, ReferenceListViewCustomizeCommandsEventArgs e) (4)
{
 foreach (IReferenceListViewCommand command in e.Commands)
 {
  Guid commandId = ((IReferenceListViewCommand2)command).Id; (5)

  if (commandId = ReferenceListViewCommandIds.ReferenceListViewCommandAddURLId) (6)
  {
   command.BeforeCommandExecute += new EventHandler<ReferenceListViewCommandExecuteEventArgs>(AddUrlCommand_BeforeCommandExecute); (7)
  }
  else if (commandId = ReferenceListViewCommandIds.ReferenceListViewCommandOpenCardId)
  {
   command.AfterCommandExecute += new EventHandler<ReferenceListViewCommandExecuteEventArgs>(OpenCardCommand_AfterCommandExecute); (8)
  }
 }
}
private void AddUrlCommand_BeforeCommandExecute(object sender, ReferenceListViewCommandExecuteEventArgs e) (9)
{
 e.Cancel = true; (10)
}
private void OpenCardCommand_AfterCommandExecute(object sender, ReferenceListViewCommandExecuteEventArgs e) (11)
{
 MessageBox.Show("Добавлена карточек";
}
1 Организуем подписку в обработчике события активации карточки.
2 Получаем элемент управления типа "Ссылки".
3 Добавляем обработчик для срабатывания настраиваемой команды.
4 Обрабатываем событие вызова настраиваемой команды.
5 Получаем идентификатор вызванной команды.
6 Выбираем команду добавления URL, либо открытия карточки.
7 Обрабатываем событие до непосредственного добавления URL.
8 Обрабатываем событие после открытия карточки.
9 Обработка команды добавления URL.
10 Прервать дальнейшее исполнение команды.
11 Обработка команды добавления карточки.

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