C# 从TabPages组合项目并运行表单

C# 从TabPages组合项目并运行表单,c#,.net,winforms,forms,C#,.net,Winforms,Forms,我想将几个winform应用程序合并成一个主应用程序。我创建了一个新的winform项目/解决方案,并从两个解决方案中添加了表单。我将TabPages添加到第一个表单中,从中启动其他表单。我还按照中的建议将项目输出类型更改为Library,当我单击classBuilder选项卡时,很难加载第二个表单(classBuilder) 我在谷歌上搜索了如何将表单添加到TabPage,大多数帖子的代码与我插入的代码非常相似,如图所示,但当我单击该选项卡时,什么也没有发生。作为一个新手,我不知道我是否走上

我想将几个winform应用程序合并成一个主应用程序。我创建了一个新的winform项目/解决方案,并从两个解决方案中添加了表单。我将TabPages添加到第一个表单中,从中启动其他表单。我还按照中的建议将项目输出类型更改为Library,当我单击classBuilder选项卡时,很难加载第二个表单(classBuilder)

我在谷歌上搜索了如何将表单添加到TabPage,大多数帖子的代码与我插入的代码非常相似,如图所示,但当我单击该选项卡时,什么也没有发生。作为一个新手,我不知道我是否走上了正确的道路,或者是否将主题代码放在了正确的位置。需要一个比我聪明的人让我走上正轨。我担心的几个问题是:1)每个表单都有一个唯一的app.config文件,如果我尝试重命名它,主表单将无法填充,因此我将其放回app.config。我为第二个表单导入了配置文件,并将其重命名为ClassBuild.config,问题是如果在专家帮助下运行第二个表单时,它将无法填充。2) 我不明白为什么我会发布“Form frmClassBuilder=new Form();”当同名表单已存在时。这代码行吗

namespace VX130
{
    public partial class VX130UI : Form
    {
        public DataTable tblPKIEN;
        public DataTable tblsAttributes;
        public DataTable tbltAttributes;
        public DataSet   dsVX130;

         SqlDataAdapter da = new SqlDataAdapter();

        public VX130UI()
        {
            InitializeComponent();
            WindowState = FormWindowState.Maximized;

            //attempt to add form to a tabpage
            Form frmClassBuilder = new Form();
            frmClassBuilder.TopLevel = false;
            tabPage9.Controls.Add(frmClassBuilder);
            frmClassBuilder.Parent = this;
            frmClassBuilder.WindowState = FormWindowState.Maximized;
            frmClassBuilder.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            frmClassBuilder.Dock = DockStyle.Fill;
            frmClassBuilder.Show();
            //end attempt

            // tabControl1
        // 
        this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
        | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right)));
        this.tabControl1.Controls.Add(this.tabPage1);
        this.tabControl1.Controls.Add(this.tabPage2);
        this.tabControl1.Controls.Add(this.tabPage8);
        this.tabControl1.Controls.Add(this.tabPage9);
        this.tabControl1.Controls.Add(this.tabPage10);
        this.tabControl1.Controls.Add(this.tabPage11);
        this.tabControl1.Controls.Add(this.tabPage12);
        this.tabControl1.Location = new System.Drawing.Point(13, 65);
        this.tabControl1.Name = "tabControl1";
        this.tabControl1.SelectedIndex = 0;
        this.tabControl1.Size = new System.Drawing.Size(963, 445);
        this.tabControl1.TabIndex = 2;

        // tabPage9
        // 
        this.tabPage9.Location = new System.Drawing.Point(4, 22);
        this.tabPage9.Name = "tabPage9";
        this.tabPage9.Padding = new System.Windows.Forms.Padding(3);
        this.tabPage9.Size = new System.Drawing.Size(955, 419);
        this.tabPage9.TabIndex = 3;
        this.tabPage9.Text = "Class Builder";
        this.tabPage9.UseVisualStyleBackColor = true;
        this.tabPage9.Controls.Add(ClassBuilderUI.frmClassBuilder());    is a ‘type’ and not valid in given context

显示选项卡页,而不是表单。并且不要为要添加的表单设置父级和窗口状态:

//Form frmClassBuilder = new Form();
ClassBuilderUI.frmClassBuilder frmClassBuilder = new ClassBuilderUI.frmClassBuilder(); <== to reference existing form (exists in solution
frmClassBuilder.Dock = DockStyle.Fill;
frmClassBuilder.TopLevel = false;
frmClassBuilder.Visible = true;
tabPage9.Controls.Add(frmClassBuilder);
tabPage9.Show();
//Form frmClassBuilder=new Form();

ClassBuilderUI.frmClassBuilder frmClassBuilder=新建ClassBuilderUI.frmClassBuilder() 我找到了创建现有表单实例(存在于解决方案中)所缺少的部分

公共VX130UI()
{
初始化组件();
WindowState=FormWindowState.Maximized;

ClassBuilderUI.frmClassBuilder frmClassBuilder=新ClassBuilderUI.frmClassBuilder();存在于何处?通过添加现有项导入解决方案。如果我将Application.Run(新VX130.VX130UI())更改为Application.Run(新ClassBuilderUI.frmClassBuilder());它显示。这与此无关。在该示例中,您将创建一个表单实例,作为运行应用程序时要显示的表单。但您希望的是新的组合表单显示,然后显示其中的其他表单。因此,您需要其他表单的实例,而这正是我的答案所显示的方法。很抱歉,收到了退出。谢谢。是的,ClassBuilderTab_鼠标单击无效。已删除。使用替换代码,您建议在单击选项卡时绘制表单大纲。除了左上角的图标外,它完全为空。“存在于何处?”通过添加现有项导入到解决方案中。如果我更改应用程序。运行(新VX130.VX130UI());to Application.Run(new ClassBuilderUI.frmClassBuilder());它显示:“您需要一个表单实例来添加到选项卡页控件集合。”我不知道该怎么做。我尝试了附加代码中所示的方法,但不正确。不知道您是否看到我的注释,在单击选项卡时表单未显示的位置。只有大纲和左上角的图标。是否缺少某些内容?如果您可以将我的答案中的行添加到您的答案中,使您的答案完整,我将检查您的a这是答案,因为您提供了显示选项卡页的关键部分。ClassBuilderUI.frmClassBuilder frmClassBuilder=new ClassBuilderUI.frmClassBuilder();
    public VX130UI()
    {
        InitializeComponent();
        WindowState = FormWindowState.Maximized;
        ClassBuilderUI.frmClassBuilder frmClassBuilder = new ClassBuilderUI.frmClassBuilder(); <== to reference existing form (exists in solution
        //Form frmClassBuilder = new Form();
        frmClassBuilder.Dock = DockStyle.Fill;
        frmClassBuilder.TopLevel = false;
        frmClassBuilder.Visible = true;
        tabPage9.Controls.Add(frmClassBuilder);
        tabPage9.Show();