【问题标题】:Custom Control and Application in Same Project同一项目中的自定义控件和应用
【发布时间】:2010-07-28 21:17:17
【问题描述】:

我想在 C# 中创建一个自定义控件,我将在我的应用程序中多次使用它,但不太可能在任何其他应用程序中使用。我看过几个网站,它们解释了如何创建自定义控件并将其添加到 Visual Studio 工具箱中。他们指示您使用可编译为 DLL 的自定义控件创建一个项目,然后为应用程序创建一个新项目并在工具箱中添加对该 DLL 的引用。但是,我宁愿我的应用程序是一个不依赖于 DLL 的单个可执行文件。有没有办法将自定义控件和应用程序放在一个项目中,并且自定义控件仍然出现在 Visual Studio 工具箱中?或者,如果无法将控件添加到工具箱,是否有其他方法可以在应用程序的设计器中查看控件?

【问题讨论】:

  • 内部使用创建的组件有什么问题?

标签: c# visual-studio custom-controls project toolbox


【解决方案1】:

技术在:

  1. 要开发您的项目,您可以像往常一样使用您的组件(意味着将其作为 DLL 添加到工具箱中并在您的项目中引用它)。

  2. 要在一个 exe 文件内部使用您的 dll,您应该将它(原始或压缩)添加到项目的资源中。

  3. 在 Main 方法中订阅 AppDomain.AssemblyResolve 事件:

    public static void Main( string[] args )
    {            
        AppDomain.CurrentDomain.AssemblyResolve += AppDomain_AssemblyResolve;    
    }
    
  4. 在事件处理程序中,您应该使用您的组件解析程序集:

    private static Assembly AppDomain_AssemblyResolve( object sender, ResolveEventArgs args )
        {
            if( args.Name.Contains( "YourComponent" ) )
            {           
                using( var resource = new MemoryStream( Resources.YourComponent ) )
                    return Assembly.Load( resource.GetBuffer() );
            }
    
            return null;
        }
    

然后你的应用程序将使用从你的exe中提取的这个程序集,但你仍然可以在开发时使用工具箱中的组件。

请注意,每次更改组件时都应在资源中更新它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多