Всем привет. Необходимо вызвать TS-окно из C#-проекта, причем заменить стандартный обработчик нажатия кнопки ОК на свой. Указанный ниже код определяет свой обработчик, но по нажатию кнопки ОК срабатывает и мой обработчик, и стандартный. Как можно избавиться от стандартного обработчика?
var button = (TSWindowLibrary.Button) wnd["btnOK"];
button.OnClick += control =>
{
MessageBox.Show("Работает!");
};
wnd.Prepare();
wnd.ShowModal();
Нравится
Здравствуйте, Олег.
Так не пойдет?
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().