Невозможно обработать событие нажатия кнопки в API интерфейса SAP B1 - PullRequest
1 голос
/ 23 октября 2019

Я начинаю с SAP B1 UI API (9.0) и пытаюсь обработать нажатие кнопки без какой-либо удачи. Вот как я это делаю (убирая ненужное, чтобы сделать его короче):

static void Main(string[] args)
{
    SetApplication(args);

    var cParams = (FormCreationParams)App.CreateObject(BoCreatableObjectType.cot_FormCreationParams);
    cParams.UniqueID = "MainForm_";
    cParams.BorderStyle = BoFormBorderStyle.fbs_Sizable;

    _form = App.Forms.AddEx(cParams);
    /*Setting form's title, left, top, width and height*/

    // Button
    var item = _form.Items.Add("BtnClickMe", BoFormItemTypes.it_BUTTON);
    /*Setting button's left, top, width and height*/
    var btn = (Button)item.Specific;
    btn.Caption = "Click Me";
    _form.VisibleEx = true;

    App.ItemEvent += new _IApplicationEvents_ItemEventEventHandler(App_ItemEvent);
}

private static void SetApplication(string[] args)
{
    string connectionString = args[0];
    int appId = -1;
    try
    {
        var guiApi = new SboGuiApi();
        guiApi.Connect(connectionString);
        App = guiApi.GetApplication(appId);
    }
    catch (Exception e)
    { /*Notify error and exit*/ }
}

private static void App_ItemEvent(string FormUID, ref ItemEvent pVal, out bool BubbleEvent)
{
    BubbleEvent = true;

    if (FormUID == "MainForm_" && pVal.EventType == BoEventTypes.et_CLICK &&
        pVal.BeforeAction && pVal.ItemUID == "BtnClickMe")
    {
        App.MessageBox("You just click on me!");
    }
}

Когда я нажимаю кнопку, ничего не происходит, это путь? Я сделал так много изменений в методе обработчика, но пока ничего. Другая деталь заключается в том, что отладчик визуальной студии завершается, как только аддон запускается (возможно, это как-то связано с моей проблемой).

Надеюсь, вы мне поможете. Заранее спасибо.

Дэвид.

1 Ответ

2 голосов
/ 23 октября 2019

Поскольку приложение перестает работать, есть два возможных ответа на этот вопрос в зависимости от того, что вы предпочитаете использовать.

Если вы используете библиотеку SAPbouiCOM, вам нужен способ, чтобы приложение продолжало работать,я использую System.Windows.Forms.Application.Run(); из сборки форм Windows.

Если вы используете SAPBusinessOneSDK и SAPbouiCOM.Framework в качестве ссылки, вы можете использовать App.Run();.

Оба из этихнеобходимо вызвать, как только ваш установочный код запустится.

...