首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从TabPages合并项目和运行窗体

从TabPages合并项目和运行窗体
EN

Stack Overflow用户
提问于 2014-10-09 11:40:02
回答 2查看 147关注 0票数 1

我想把几个winform应用程序组合成一个主应用程序。我创建了一个新的winform项目/解决方案,并添加了其中两个解决方案中的窗体。我将TabPages添加到了第一个窗体中,可以从该窗体启动其他窗体。我还按照combine multiple C# projects中的建议将项目输出类型更改为库。单击Class Builder选项卡时,我很难加载第二个窗体(classBuilder)。

我在谷歌上搜索了如何将表单添加到TabPage中,大多数帖子都有非常类似的代码,我插入的代码如下所示,但当我单击选项卡时没有任何反应。作为一个新手,我不知道我是走在正确的道路上,还是把主代码放在了正确的地方。我需要一个比我聪明得多的人来让我走上正轨。我关注的几个问题是: 1)每个表单都有一个惟一的App.config文件,如果我试图重命名它,主表单不能填写,所以我把它放回app.config。我导入了第二个表单的配置文件,并将其重命名为ClassBuild.config,令人担忧的是,如果我在一些专家的帮助下运行第二个表单,它将无法填写。2)我不明白为什么我要发出‘form frmClassBuilder = new form();’,而同名的表单已经存在了。这段代码可以吗?

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2014-10-09 18:48:51

显示TabPage,而不是表单。不要为你添加的表单设置像Parent和WindowState这样的东西:

代码语言:javascript
运行
复制
//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();

我不明白为什么我要发出‘

frmClassBuilder = new form ();’,而同名的表单已经存在了。

存在于何处?多么?您需要窗体的一个实例才能添加到Tab页控件集合。如果你已经有一个实例,你可以添加它。只要确保它不会被Close()Dispose()调用即可。

ClassBuilderTab_MouseClick处理程序中的代码看起来毫无用处。除非您有其他需要,否则我会删除它。

票数 0
EN

Stack Overflow用户

发布于 2014-10-10 02:12:42

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

代码语言:javascript
运行
复制
    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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26269928

复制
相关文章

相似问题

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