Click here to Skip to main content
Click here to Skip to main content

How to Host Windows Form in Windows User Control

, 30 Apr 2013
Rate this:
Please Sign up or sign in to vote.
In the tip, I want to illustrate how to host windows form in windows user control

Introduction

In my previous tip, "Hosting windows form user control in MFC dialog", we discussed about how to host Windows Form user controls in MFC dialog box and integrate MFC with .NET platform with CLI technology. Now, we'll talk about How to host Windows Form in Windows user control. My idea of this tip/trick and previous tip/trick is to reach a solution for using Windows Forms in MFC dialog and integrate .NET Forms with MFC forms.

Background

Before reading this tip/trick, please read about user control from here.

Using the Code

Note: If I have a Windows Form in my project, I could not set parent before initializing Form "TopLevel" properties with false value, and if I do it (set parent object before than), I get an Error.

  1. Open Visual Studio
  2. Create Windows Forms Control Library and set then name of project, for example. "WinFormUserControl".
  3. Drag button control to the UserControl1 place and set Dock property to "Button".
  4. Drag panel control to the UserControl1 place and set Dock property to "Fill".
Now we have a Windows Forms Control Library project with one User Control, Button and Panel Control. The name of the user control is UserControl1 and panel is Panel1. After that, we add a Windows Form in our project, we can set the name of new form to "ChildForm". At this step, we can overload the Show() method of form as follows:

public partial class ChildForm : Form
{
    public ChildForm()
    {
        InitializeComponent();
    }

    public void Show(Panel parentObject)
    {
        if (parentObject != null)
        {
            this.TopLevel = false;
            this.Parent = parentObject;
        }
        this.Show();
    }        
} 

Now we should instantiate "ChildForm" in button1 click() event and call overloaded Show(Panel parentObject) method for hosting Windows Form in panel.

public partial class UserControl1: UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ChildForm childForm = new ChildForm();
        childForm.Show(this.panel1);
    }
} 

Congratulations. Please run your project and click on Button1.

History

  • May 1, 2013: First published

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

AYDIN EBRAHIMI HOMAY
Software Developer (Senior) KTC(Kerman Tablo Co.)-Industrial Automation
Iran (Islamic Republic Of) Iran (Islamic Republic Of)
I am an eternal student.
Follow on   Google+   LinkedIn

Comments and Discussions

 
QuestionInteresting Pinmvpadriancs30-Apr-13 23:27 
Hey this is interesting. Thanks for sharing.
I never though that this could be so easy.
AnswerRe: Interesting PinmemberAYDIN EBRAHIMI HOMAY30-Apr-13 23:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.140721.1 | Last Updated 1 May 2013
Article Copyright 2013 by AYDIN EBRAHIMI HOMAY
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid