我想把几个winform应用程序组合成一个主应用程序。我创建了一个新的winform项目/解决方案,并添加了其中两个解决方案中的窗体。我将TabPages添加到了第一个窗体中,可以从该窗体启动其他窗体。我还按照combine multiple C# projects中的建议将项目输出类型更改为库。单击Class Builder选项卡时,我很难加载第二个窗体(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发布于 2014-10-09 18:48:51
显示TabPage,而不是表单。不要为你添加的表单设置像Parent和WindowState这样的东西:
//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处理程序中的代码看起来毫无用处。除非您有其他需要,否则我会删除它。
发布于 2014-10-10 02:12:42
我找到了创建现有表单实例所缺少的部分(存在于解决方案中)。
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();https://stackoverflow.com/questions/26269928
复制相似问题