C# 在不同窗体上切换带有窗体控制按钮的选项卡

C# 在不同窗体上切换带有窗体控制按钮的选项卡,c#,winforms,C#,Winforms,我创建了一个带有5个静态选项卡的表单,然后创建了5个单独的表单,在主表单加载时加载到它们。第一个选项卡在表单上有按钮,我想链接到这些按钮,并在单击时显示相应的选项卡 我遇到的问题是,按钮不在主窗体上,但是一个单独的窗体没有切换到主窗体上相应选项卡的选项 我尝试了tabControl1.SelectedTab=tabPage2几天来一直困扰着我这一点非常感谢您的帮助我理解您的问题,您的问题是“如何将点击子表单的按钮传达给主表单” 我建议在子窗体中声明事件,并在主窗体中捕获这些事件。因此,子表单的简

我创建了一个带有5个静态选项卡的表单,然后创建了5个单独的表单,在主表单加载时加载到它们。第一个选项卡在表单上有按钮,我想链接到这些按钮,并在单击时显示相应的选项卡

我遇到的问题是,按钮不在主窗体上,但是一个单独的窗体没有切换到主窗体上相应选项卡的选项


我尝试了
tabControl1.SelectedTab=tabPage2
几天来一直困扰着我这一点非常感谢您的帮助我理解您的问题,您的问题是“如何将点击子表单的按钮传达给主表单”

我建议在子窗体中声明事件,并在主窗体中捕获这些事件。因此,子表单的简化示例可以如下所示:

public class SubForm : Form
{
    // this is the event to register with from MainForm
    public event EventHandler ButtonClicked;
    // thread safe event invocator (standard pattern)
    protected virtual void OnButtonClicked()
    {
        EventHandler handler = ButtonClicked;
        if (handler != null) handler(this, EventArgs.Empty);
    }

    // your button handler
    private void button1_Clicked(object sender, Eventargs e)
    {
        OnButtonClicked();
    }
}
在您的主要表格中,您可以执行以下操作:

public class MainForm : Form
{
    private SubForm _subForm1 = new SubForm();
    private SubForm _subForm2 = new SubForm();

    public MainForm()
    {
        InitializeComponents();
        // more initializatino

        _subForm1.ButtonClicked += subForm1_ButtonClicked;
        _subForm2.ButtonClicked += subForm2_ButtonClicked;
    }

    private void subForm1_ButtonClicked(object sender, EventArgs e)
    {
        tabControl1.SelectedTab = tabPage1;
    }
    private void subForm2_ButtonClicked(object sender, EventArgs e)
    {
        tabControl1.SelectedTab = tabPage2;
    }

您还可以考虑只使用一个单击的
someSubForm\u按钮
处理程序,并通过
sender
参数推断要选择哪个选项卡,这将是引发事件的
子表单。

请发布代码以澄清您的问题。难以理解的问题请在此处粘贴一些代码供我们开始。如果您使用的是Windows窗体
选项卡控件
,则应更改
所选索引
。请参见此处:单击按钮时,让表单引发事件。您可以在主窗体中订阅该活动,并更改SelectedIndex属性。谢谢。如果我有任何问题,我会尽力在以后的问题上发布代码,我相信我会的,是的,这正是我想要的,Rene,现在对我来说是有意义的,关于他们之间的交流,非常感谢。