Переопределение обработчика события TS-объекта из C#

Всем привет. Необходимо вызвать TS-окно из C#-проекта, причем заменить стандартный обработчик нажатия кнопки ОК на свой. Указанный ниже код определяет свой обработчик, но по нажатию кнопки ОК срабатывает и мой обработчик, и стандартный. Как можно избавиться от стандартного обработчика?

var wnd = (TSWindowLibrary.Window) _tsConnector.Services.GetNewItemByUSI("someWnd");

var button = (TSWindowLibrary.Button) wnd["btnOK"];
button.OnClick += control =>
      {
            MessageBox.Show("Работает!");
      };

wnd.Prepare();
wnd.ShowModal();

Нравится

4 комментария

Здравствуйте, Олег.

Так не пойдет?

button.OnClick = control =>
      {
            MessageBox.Show("Работает!");
      };

Нет, "The event 'OnClick' can only appear on the left hand side of += or -=".

Здравствуйте.

Значит нужно попробовать следующее: посмотреть в администраторе как точно называется событие нажатия на кнопку(базовое), и отписаться от него, используя -=.

Или, пойти с другой стороны, отписаться от базового события функцией конфигурации:

UnsubscribeFromEvent(ObjectID, ObjectMethodName);

(см. функцию function SetObjectEventDispatcher(ScriptableService, ObjectInstance, ObjectID, ObjectMethodName, ScriptMethodName, только вместо EventsDispatcher.SubscribeForEvent - EventsDispatcher.UnsubscribeFromEvent(ObjectID, ObjectMethodName);).

Спасибо, помогла функция EventsDispatcher.UnsubscribeFromEvent().

Показать все комментарии