繁体   English   中英

将 tabPage 添加到单独的 Form

[英]Adding a tabPage to a separate Form

我有 2 个表单,一个被标记为 Form1.cs,它有一个 tabControl,默认有 2 个选项卡。 我有 Form2.cs,上面有一个标签(名称:)、一个文本框和一个“确定”按钮。

我希望在 Form1.cs 上创建一个新选项卡,选项卡顶部的名称是文本框中输入的任何内容。

我对 C#/Visual Studio 非常陌生,发现很难阅读任何可能对我有帮助的内容。

Form1.cs 和 Form2.cs

namespace Scoreboard3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void scoreboard2pToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog();
        }
    }
}
namespace Scoreboard3
{
    public partial class Form2 : Form
    {
        public string SelectedText { get; set; }

        public Form2()
        {
            InitializeComponent();
        }

        private void txtBox2v2_TextChanged(object sender, EventArgs e)
        {

        }

        public void OK_Click(object sender, EventArgs e)
        {
            Form1.TabControl1.TabPages.Add;
        }
    }
}

根据您提供的代码,您从form1打开form2。 所以form2是form1的子窗体。 也许您可以通过“ event ”刷新form1。 这是您可以参考的简单代码。

Form1.cs

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    void form1_AddTab(string name)
    {
        tabControl1.TabPages.Add(name);
    }

    private void btOpenForm2_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        // Subscribe to the event
        form2.AddEvent += form1_AddTab;
        form2.ShowDialog();
    }
}

Form2.cs

public delegate void AddDelegate(String name);
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    public event AddDelegate AddEvent;

    private void btOK_Click(object sender, EventArgs e)
    {
        AddEvent(textBox1.Text);
        this.Close();
    }
}

无需从其他表单访问该选项卡控件。 你可以做:

在包含选项卡控件的第一种形式中:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void scoreboard2pToolStripMenuItem_Click(object sender, EventArgs e)
    {
        using (Form2 f2 = new Form2())
        {
            if(f2.ShowDialog() == DialogResult.OK)
            {
                TabControl1.TabPages.Add(f2.SelectedText);
                //or insert
                //TabControl1.TabPages.Insert(0, f2.SelectedText);
            }
        }
    }
}

第二种形式:

public partial class Form2 : Form
{
    //A read only property to return the text entered in the text box.
    public string SelectedText => txtBox2v2.Text;

    public Form2()
    {
        InitializeComponent();
    }

    public void OK_Click(object sender, EventArgs e)
    {
        //You only need to do this in your OK button.
        DialogResult = DialogResult.OK;
    }
}

让每种形式处理其自己的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM