Description
PowerBuilder.RegisteredObject.TriggerEvent is a .NET method, not a PowerScript method.
It is called in the C# code to trigger the event of the PowerBuilder object. For details, refer to Triggering PowerScript events from C# code in Application Techniques.
Dynamic library
The following runtime DLL files must be referenced in the C# code according to the target framework:
-
pbdotnetinvoker.dll for .NET (when the .NET assembly is loaded through LoadWithDotNet)
-
pbdotnetframeworkinvoker.dll for .NET framework (when the .NET assembly is loaded through LoadWithDotNetFramework). This DLL (and function) is only available in PowerBuilder 2022 and earlier.
-
pbdotnetcoreinvoker.dll for .NET core (when the .NET assembly is loaded through LoadWithDotNetCore). This DLL (and function) is only available in PowerBuilder 2022 and earlier.
These runtime DLL files are located in the PowerBuilder Runtime directory (by default %systemdrive%\Program Files (x86)\Appeon\Common\PowerBuilder\Runtime [version]) and will be deployed automatically.
Note
pbdotnetinvoker.dll should not be placed in more than one location at runtime, for example, if pbdotnetinvoker.dll is placed in both the runtime folder and the application root folder, the call to pbdotnetinvoker.dll will fail (error "-52 -- The objectname is not registered." will be returned), because pbdotnetinvoker.dll in the runtime folder will be used for registration while pbdotnetinvoker.dll in the application root folder will be used (with higher priority) for PB callback functions; the file used for registration and call must be the same one, otherwise the call fails.
Namespace
PowerBuilder
Syntax
int RegisteredObject.TriggerEvent(string registeredObject, string eventName{,string eventParam}{,ref string returnValue})
Argument |
Description |
---|---|
registeredObject |
The registered name of PowerBuilder object that is case-sensitive. |
eventName |
The event name to be triggered. |
eventParam (optional) |
The parameter of the event. |
returnValue (optional) |
The return value of the event. |
Return value
Integer.
Returns values as follows.
1 -- Success
-1 -- Unknown error.
-50 -- PowerObject is not instantiated.
-52 -- The objectname is not registered. Make sure pbdotnetinvoker.dll is NOT placed in more than one location at runtime, otherwise, the DLL for registering the object and the DLL for PB callback function may not be the same one. See the note above for more details.
-53 -- Invalid event name.
-54 -- The number of event parameters is wrong.
-55 -- Event parameter type error.
Examples
This C# code triggers the ue_ondotnetcallback event of the PowerBuilder object w_dotnettest:
// Need to add the corresponding pbdotnetcoreinvoker.dll or pbdotnetframeworkinvoker.dll or pbdotnetinvoker.dll to the project reference namespace Appeon.PowerBuilder.DotNet.Test // These dll files are located in the PB Runtime directory and will be deployed automatically { public class TriggerPBEvent { public string Method(string str1) { string strResult = ""; PowerBuilder.RegisteredObject.TriggerEvent("w_dotnettest","ue_ondotnetcallback", "Param from Method", ref strResult);// Trigger the ue_ondotnetcallback event in the PB object w_dotnettest return str1 + "(Method)\nReturn:" + strResult; } } }
This PowerScript code defines the user event ue_ondotnetcallback and calls the callback function to get the result of executing user event in C# code:
// w_dotnettest window event ue_ondotnetcallback string ls_test ls_test= "ue_ondotnetcallback(as_param:" + as_param +")" return ls_test // Call the method Method in DotNet ls_return = lcs_ass.Method("PB event callback test") MessageBox("Info", ls_return)