You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中调用SAP B1 Screen Painter创建的XML表单字段?

Hey there! Let's tackle your two SAP Business One Screen Painter questions head-on — I’ve worked with this setup plenty, so I’ll walk you through it clearly.

1. 如何在C#中使用SAP B1 Screen Painter表单字段

First, you’ll need to make sure you’ve referenced the SAP Business One DI API and UI API in your C# project (you can find these in the SAP B1 client installation directory).

Once that’s sorted, here’s the core workflow:

  • Connect to the SAP B1 application instance.
  • Either create a new Screen Painter form or load an existing one (like your XML file).
  • Access form fields using their unique IDs (you’ll set these in the Screen Painter tool when designing the form).

Here’s a basic code snippet to get you started with accessing fields:

using SAPbouiCOM;

// Get the active SAP application instance
Application sapApp = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("SAPbouiCOM.Application");

// Load your target Screen Painter form (we'll cover XML loading in the next section)
Form myForm = sapApp.Forms.Item("YourFormUniqueID");

// Access an EditText field and manipulate its value
EditText userNameTxt = (EditText)myForm.Items.Item("txtUserName").Specific;
userNameTxt.Value = "John Doe";
string userInput = userNameTxt.Value;

// Access a combo box and populate its options
ComboBox statusCombo = (ComboBox)myForm.Items.Item("cmbStatus").Specific;
statusCombo.ValidValues.Add("Active", "1");
statusCombo.ValidValues.Add("Inactive", "2");
2. 调用已保存为XML的Screen Painter表单中的按钮、EditText等字段

When you’ve saved your Screen Painter form as an XML file, you first need to load it into your C# application, then hook into its controls. Here’s the step-by-step breakdown:

Step 1: Load the XML form into SAP B1

First, read the XML file content and use SAP’s API to load it:

// Read the XML file content from your project directory
string formXml = System.IO.File.ReadAllText(@"C:\YourProjectPath\YourCustomForm.xml");

// Prepare form creation parameters
FormCreationParams creationParams = sapApp.CreateObject(BoCreatableObjectType.cot_FormCreationParams) as FormCreationParams;
creationParams.XmlData = formXml;
Form loadedForm = sapApp.Forms.AddEx(creationParams);

// Make the form visible to the user
loadedForm.Visible = true;

Step 2: Access and interact with controls

Now that the form is loaded, you can access buttons, EditTexts, and other elements using their Item IDs (defined in the Screen Painter tool):

// Access an EditText field and set a default value
EditText emailTxt = (EditText)loadedForm.Items.Item("txtEmail").Specific;
emailTxt.Value = "user@example.com";

// Access a button and attach a click event handler
Button submitBtn = (Button)loadedForm.Items.Item("btnSubmit").Specific;
// Subscribe to the global SAP item event to catch button clicks
sapApp.ItemEvent += new _IApplicationEvents_ItemEventEventHandler(SapApp_ItemEvent);

Step 3: Handle button click events

You’ll need an event handler to respond when the button is clicked. Here’s an example implementation:

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

    // Verify the event is for your form and target button
    if (FormUID == loadedForm.UniqueID && pVal.ItemUID == "btnSubmit" && pVal.EventType == BoEventTypes.et_ITEM_PRESSED)
    {
        // Retrieve the value from the EditText field
        EditText emailTxt = (EditText)sapApp.Forms.Item(FormUID).Items.Item("txtEmail").Specific;
        string userEmail = emailTxt.Value;

        // Execute your custom logic — e.g., save to SAP or show a confirmation
        sapApp.MessageBox($"Submitted email: {userEmail}", 1, "OK", "", "");
    }
}

A quick pro tip: Always double-check the Item IDs in your XML file — they need to match exactly what you’re referencing in your C# code. Null reference errors here usually mean a mismatched ID!

内容的提问来源于stack exchange,提问作者Saif Ullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:01:03