首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有一个表单从dll文件加载

只有一个表单从dll文件加载
EN

Stack Overflow用户
提问于 2021-01-01 01:51:27
回答 2查看 41关注 0票数 0

我刚刚受雇于这家公司,帮助他们为他们正在开发的数控机床编写一些c#代码。我目前正在工作的部分是有一个插件运行,将在这个软件上运行,这个软件是由第三方公司制作的,他们从第三方公司获得了他们机器的部件。该插件有两个windows窗体,一个是主要窗体,用于完成GUI所需的大部分工作,另一个是调试窗体,用于帮助测试。他们最近不得不更新用于运行插件的shell,现在只有调试窗体在运行时才会实际加载。在"PrimaryForm.cs“中

代码语言:javascript
复制
public partial class PrimaryForm : Form
{
    //...
    //the debug form is declared here
    DebugForm DebugForm = new DebugForm();
    //...
}

我这里有一个断点,但它从未命中过

但是,唯一命中的断点是在"DebugForm.cs“文件中

代码语言:javascript
复制
public partial class DebugForm: Form
{
    public DebugForm()
    {
        //the following method is called in the DebugForm.Desiger.cs file
        InitializeCompnent();
    }
    //...
}

(请记住,目前还没有人真正做过这方面的工作,都是EE或CE的人,所以在任何地方都可以看到零约定)我猜测dll只是出于某种原因而告诉运行插件的应用程序加载debugForm。这两个表单类也都是公共的,所以我不确定为什么根本不加载primaryForm。在visual studio中,包含表单文件和所有内容的整个项目都作为dll输出,所以我认为它们应该在同一个文件中。

Edit:更多地解释一下,问题甚至不一定是dll首先运行DebugForm load_event(),而是它首先运行DebugForm的构造函数,并且只运行该构造函数,然后运行load_event()。

EN

回答 2

Stack Overflow用户

发布于 2021-01-01 02:17:09

当我创建一个新的windows窗体应用程序时,它从主窗体Program.cs开始

代码语言:javascript
复制
static void Main()
{
Application.Run(new PrimaryForm());
}

然后我会从事件中加载额外的表单。在这种情况下,主表单同时加载。表单PrimaryForm

代码语言:javascript
复制
private void PrimaryForm_Load(object sender, EventArgs e)
{
Form DebugForm = new DebugForm();
DebugForm.Show();
}

我确实遇到了.bat加载第二个表单而不是第一个表单的情况。它最终成为主窗体加载事件中的一个bug,调试器没有注意到它,但它继续加载第二个窗体。它只是没有显示()我的初选。

票数 0
EN

Stack Overflow用户

发布于 2021-01-05 00:36:50

所以问题似乎出在第三方应用程序上。我的同事在我开始任何工作之前就设置了它,他意外地告诉应用程序查找调试窗体,这就是为什么它首先加载它,而不是其他任何东西,除非在代码中特别调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65524135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档