我有一个MainWindow
表单,其中包含TabControl
组件,动态点击menuItem我创建一个新标签TabPage
。新创建的TabPage
包含新的Form
。
新打开的TabPage
,其中包含新的Form
en。Products
,其DataGridView
包含产品列表。当我双击DataGridview
Products
表单中的单元格时,我想将新标签页打开到Mainwindow
。
dataGridView1_CellContentDoubleClick
- >在主窗口中打开新选项卡
在MainWindow
我创建:
private void ProductListToolStripMenuItem_Click(object sender, EventArgs e)
{
ProductForm = f = new Form();
CreateTabPage(f);
}
private void CreateTabPage(Form form)
{
form.TopLevel = false;
TabPage tabPage = new TabPage();
tabPage.Text = form.Text;
tabPage.Controls.Add(form);
mainWindowTabControl.Controls.Add(tabPage);
mainWindowTabControl.SelectedTab = tabPage;
form.Show();
}
从Product
表单我想将数据发送到MainWindow
表单,以创建已在TabPage
中定义的新MainWindow
。
public partial class Product: Form
{
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
// create new tab page to MainWindow form
}
}
我没有使用MDI
,我认为如果不创建新的MainWindow
实例并传递参数,这是不可能的。在我的情况下,MainWindow
已经打开,如果我关闭MainWindow
所有内容都将关闭。
知道如何解决这个问题吗?
答案 0 :(得分:0)
在MainWindow上创建一个属性,将mainWindowTabControl公开为属性
public System.Windows.Forms.TabControl MainTabControl
{
get
{
return mainWindowTabControl;
}
}
现在,在Product
表单MainFormRef
上有一个属性,因此当您创建Product
表单的实例时,请将MainWindow的引用传递给它:
Product p = new Product();
p.MainFormRef = this;
现在使用此选项添加新标签:
public partial class Product: Form
{
public Form MainFormRef { get; set; }
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
// create new tab page to MainWindow form
TabPage tabPage = new TabPage();
tabPage.Text = form.Text;
tabPage.Controls.Add(form);
MainFormRef.MainTabControl.Controls.Add(tabPage);
MainFormRef.MainTabControl.SelectedTab = tabPage;
}
}