无法处理 SAP B1 中的按钮单击事件 UI API
Unable to handle a button click event in SAP B1 UI API
我从 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!");
}
}
当我点击按钮时没有任何反应,这是正确的方法吗?我在处理程序方法中做了很多变化,但还没有。另一个细节是 visual studio 的调试器在插件启动后立即终止(也许这与我的问题有关)。
希望你能帮助我。提前致谢。
大卫.
自从应用程序停止 运行ning 以来,这个问题有两个可能的答案,具体取决于您喜欢使用什么。
如果您正在使用 SAPbouiCOM
库,您需要一种方法来保持应用程序 运行ning,我使用的方法是 windows 表格中的 System.Windows.Forms.Application.Run();
组装.
如果您使用 SAPBusinessOneSDK 和 SAPbouiCOM.Framework
作为参考,您可以使用 App.Run();
.
一旦您的设置代码具有 运行.
,这两个都需要被调用
我从 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!");
}
}
当我点击按钮时没有任何反应,这是正确的方法吗?我在处理程序方法中做了很多变化,但还没有。另一个细节是 visual studio 的调试器在插件启动后立即终止(也许这与我的问题有关)。
希望你能帮助我。提前致谢。
大卫.
自从应用程序停止 运行ning 以来,这个问题有两个可能的答案,具体取决于您喜欢使用什么。
如果您正在使用 SAPbouiCOM
库,您需要一种方法来保持应用程序 运行ning,我使用的方法是 windows 表格中的 System.Windows.Forms.Application.Run();
组装.
如果您使用 SAPBusinessOneSDK 和 SAPbouiCOM.Framework
作为参考,您可以使用 App.Run();
.
一旦您的设置代码具有 运行.
,这两个都需要被调用