Skip to main content
.NET 8.0+

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

How to: Show a Custom Windows Form

  • 4 minutes to read

In XAF WinForms applications, it is possible to show custom windows using standard Windows Forms approaches, such as the Form.Show and Form.ShowDialog methods. If a Form should show data from the application’s database, it is possible to use XAF mechanisms for CRUD operations using the IObjectSpace interface. This topic demonstrates how to initialize and show a custom Form when an XAF Action is clicked.

#Show a Custom Window

The steps below describe how to show a custom window on an Action‘s Execute event.

  • Create and design a custom Form, for example, a NonXAFForm.
  • Create a new ViewController descendant and add a new SimpleAction in its constructor.
  • Create a new NonXAFForm instance in the Action’s Execute event handler.
  • Invoke the window using the Form.ShowDialog method.

    using DevExpress.ExpressApp;
    using DevExpress.ExpressApp.Actions;
    using System.Windows.Forms;
    //...
    public class ShowWindowController : ViewController {
        public ShowWindowController() {
            SimpleAction showWindowAction = new SimpleAction(this, "ShowWindow", 
    DevExpress.Persistent.Base.PredefinedCategory.View);
            showWindowAction.ImageName = "ModelEditor_Views";
            showWindowAction.Execute += 
    new SimpleActionExecuteEventHandler(showWindowAction_Execute);
        }
        void showWindowAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
            NonXAFForm form = new NonXAFForm();
            //...
            form.ShowDialog();
        }
    }
    

CustomWindowWithoutXAFData

#Show a Custom Window with XAF Data

In this example, a custom window with a control that displays XAF data is invoked when an Action‘s Execute event occurs. The DataGridView control is used here for demonstration purposes. Follow the steps below to implement this behavior:

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using System.Collections;
using System.Windows.Forms;
//...
public class ShowWindowController : ViewController {
    public ShowWindowController() {
        SimpleAction showWindowAction = new SimpleAction(this, "ShowWindow", 
DevExpress.Persistent.Base.PredefinedCategory.View);
        showWindowAction.ImageName = "ModelEditor_Views";
        showWindowAction.Execute += 
new SimpleActionExecuteEventHandler(showWindowAction_Execute);
    }
    void showWindowAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
        Form form = new Form();
        form.Text = "Form with XAF Data";
        IObjectSpace objectSpace = Application.CreateObjectSpace(typeof(Contact));
        IList contactsCollection = objectSpace.CreateCollection(typeof(Contact));
        DataGridView dataGridView = new DataGridView();
        dataGridView.DataSource = contactsCollection;
        dataGridView.Dock = DockStyle.Fill;
        form.Controls.Add(dataGridView);
        form.ShowDialog();
    }
}

CustomWindowWithXAFData

You can display XAF data in a control of an existing form by adding the form’s constructor with the IObjectSpace parameter. In this constructor, specify the control’s DataSource property using the IObjectSpace.GetObjects method. The code snippet below shows an example of this constructor.

using System.Windows.Forms;
using DevExpress.ExpressApp;
using DevExpress.XtraEditors;
//...
public partial class NonXAFForm : XtraForm {
    //...
    private IObjectSpace objectSpace;
    public NonXAFForm(IObjectSpace objectSpace) : base() {
        InitializeComponent();
        this.objectSpace = objectSpace;
        dataGridView1.DataSource = objectSpace.GetObjects(typeof(Contact));
        //...
    }
}
See Also