A DLL with WinForms that can be launched from A main app

15,806

Solution 1

If you're using VS 2008:

First, create a Windows Forms Application project. You can delete the default form that's created (Form1.cs) if you don't plan to use it.

In the Solution Explorer, right-click on the References and select Add Reference. This is the point where you add your custom designed C# DLL.

Now open Program.cs, and in make the following change:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using ****your DLL namespace here****
namespace WindowsFormsApplication2
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new [****your startup form (from the DLL) here****]);
        }
    }
}

If the DLL contains disconnected forms, you'll probably need to add a class in the winforms project to coordinate the forms behavior.

Solution 2

You can add forms to your DLL, then make a public static function in the DLL that calls Application.Run with a form.

You can then call this public static method from a C# Application project (after adding a reference to the DLL).

Solution 3

You can launch it with RunDll32 however you may need to tweek the dll a bit before it will work. You may need to put a Application.Run in the entry point. this way you do not need to compile another entire application to use it.

the below code is untested but I think it should work.

public static void myDllEntryPoint()
{
     Application.run(new MyFormInDll());   
}

Run your application as

rundll32.exe myDll.dll,myDllEntryPoint
Share:
15,806

Related videos on Youtube

Bohn
Author by

Bohn

Some Entry Level developer. .NET Rails

Updated on April 22, 2022

Comments

  • Bohn
    Bohn about 2 years

    I have created a C# DLL that has some forms in it. ( I needed it to be a DLL, not a Windows Application.) How can I run it as a Windows App? Should I create another app and load it? How? What do I need to learn to do that? please let me know if I should explain more about my question.

  • Bohn
    Bohn about 14 years
    so In my new C# App, I should have a dummy form that all it does is a call to that public static function in my DLL, right? I want This new C# to be nothing more than a wrapper to run that DLL
  • Scott Chamberlain
    Scott Chamberlain about 14 years
    No, in the new app in the program.cs replace the Application.Run(new Form1()); with Application.Run(new MyDllNamespace.MyDllMainForm()); Do not forget to add a reference to the dll in your project references.
  • Bohn
    Bohn about 14 years
    cool, but this is my need: having kind of a C# exe application that all it does is being a wrapper for that DLL to show it.
  • Scott Chamberlain
    Scott Chamberlain about 14 years
    Than I would go with SLaks answer.
  • Bohn
    Bohn about 14 years
    " You can delete the default form that's created (Form1.cs) if you don't plan to use it." ...nice, I did not like to have a dummy form that I am not actually using it.