gpt4 book ai didi

c# - 同一项目中的自定义控件和应用程序

转载 作者:行者123 更新时间:2023-11-30 17:21:31 25 4
gpt4 key购买 nike

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

最佳答案

技术在于:

  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 中提取的程序集,但您仍然可以在开发时使用工具箱中的组件。

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

关于c# - 同一项目中的自定义控件和应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3357568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com