c#从单独的表单向tabControl添加制表符

本文关键字:tabControl 添加 制表符 表单 单独 | 更新日期: 2023-09-27 18:16:41

好的,我要做的是我有一个名为MainForm的表单,它有一个TabControl和另一个名为newProject的表单,我想在MainForm的TabControl上创建一个新的选项卡。

这是我的newProject Form

的代码
void wizard1_FinishButtonClick(object sender, CancelEventArgs e)
{
    MainForm mf = new MainForm();
    createTab();
    this.Hide();
}
void createTab()
{
    MainForm mf = new MainForm();
    string name = textBoxX1.Text;
    SuperTabItem tab = mf.ProjectTabControl.CreateTab(name);
}

下面是MainForm

的代码
public SuperTabControl ProjectTabControl
{
    get
    {
        return projectTabControl;
    }
}
private void newProjectTab_Click(object sender, EventArgs e)
{
    newproject.Show();
}
public void AddTab()
{
    string s = "New File " + NewTab++;
    this.ProjectTabControl.Tabs.Add(new BPSTabItem(s));
    textEditor();
}

我不知道为什么它不工作,所以任何帮助都会很感激,

提前谢谢你,凯尔

c#从单独的表单向tabControl添加制表符

它不工作,因为你每次启动一个新的MainForm

void createTab()
{
    MainForm mf = new MainForm();
}

你可以这样做:

TabControl tc = null;
public newProject(TabControl tc)
{
    this.tc = tc;
}
void createTab()
{
    string name = textBoxX1.Text;
    // Add tab to tc
}
在MainForm中,你可以使用
newProject frm = new newProject(my_tab_control);

我不太明白你对名字的解决方案。
无论如何,这个想法是,当你创建你的第二种形式(从主要一个)你传递一个引用到你的标签控件;所以在第二个表单中,你可以直接给TAB控件添加一个新的TAB

可能是因为您声明的MainForm只存在于createTab()函数的作用域中。不是实例化MainForm的新对象,而是将您在wizard1_FinishButtonClick中创建的MainForm对象传递给createTab()方法。这样的:

void wizard1_FinishButtonClick(object sender, CancelEventArgs e)
{
    MainForm mf = new MainForm();
    createTab(mf);
    this.Hide();
}
void createTab(MainForm mf)
{
    string name = textBoxX1.Text;
    SuperTabItem tab = mf.ProjectTabControl.CreateTab(name);
}