DLL с WinForms, который может быть запущен из главного приложения

Я создал DLL C#, который имеет некоторые формы в нем. (Мне был нужен он, чтобы быть DLL, не Приложением Windows.), Как я могу выполнить его как Приложение Windows? Я должен создать другое приложение и загрузить его? Как? Что я должен учиться делать это? сообщите мне, должен ли я объяснить больше о своем вопросе.

5
задан Bohn 12 May 2010 в 19:56
поделиться

3 ответа

Если вы используете VS 2008:

Сначала создайте проект приложения Windows Forms. Вы можете удалить созданную форму по умолчанию (Form1.cs), если не планируете ее использовать.

В обозревателе решений щелкните правой кнопкой мыши Ссылки и выберите Добавить ссылку . Это момент, когда вы добавляете свою специально разработанную C # DLL.

Теперь откройте Program.cs и внесите следующие изменения:

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****]);
        }
    }
}

Если DLL содержит отключенные формы, вам, вероятно, потребуется добавить класс в проект winforms для координации поведения форм.

7
ответ дан 18 December 2019 в 11:54
поделиться

Вы можете добавить формы в DLL, затем сделать публичную статическую функцию в DLL, которая вызывает Application.Run с формой.

Затем вы можете вызвать этот публичный статический метод из проекта приложения C# (после добавления ссылки на DLL).

4
ответ дан 18 December 2019 в 11:54
поделиться

Вы можете запустить ее с помощью RunDll32, однако вам, возможно, придется немного подправить DLL, прежде чем она заработает. Вам может понадобиться поместить Application.Run в точку входа. таким образом, вам не нужно компилировать другое приложение, чтобы использовать его.

приведенный ниже код не проверялся, но я думаю, что он должен работать.

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

Запустите ваше приложение как

rundll32.exe myDll.dll,myDllEntryPoint
4
ответ дан 18 December 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: