传递价值观和事件

时间:2012-01-13 21:40:45

标签: c# events

我正在使用C#
我有02个表单,表单O1包含03个按钮,表单2包含带有3个选项卡的TabControl 当我单击表单1上的第一个按钮时,如何使选项卡1成为活动选项卡,当我单击第二个按钮时,第二个选项卡将激活,而最后一个按钮则相同 任何帮助。我没有anu想法。是否可以通过传递参数来做到这一点?

5 个答案:

答案 0 :(得分:0)

您需要获取表单的实例,然后才能访问该表单上的控件 - 您需要将控件创建为Public以便以其他形式访问。

编辑:在窗体上公开控件并不总是一个好主意。因此,您可以只在该类中创建属性并从该属性设置所选索引,而不是将控件公开。例如:

public class Form2
{
    public int TabSelectedIndex 
    { 
       set { tabControl.TabIndex = value; }
    }
}

public class Form1
{
    private Form2 _form2 = new Form2();

    private void Button1_Click(object sender, EventArgs e)
    {
        _form2.TabSelectedIndex = 1;
    }
}

答案 1 :(得分:0)

向Form2添加方法。类似于...... void SetActiveTabIndex(Int32 index) {TabControl1.ActiveTab = ...}

答案 2 :(得分:0)

将表单2上tabcontrol的“Modifiers”属性设置为“Public”然后在Form 1上使用以下代码:

Form2 frm = new Form2 ();

//you will need to call frm.Show() somewhere to display form2

private void Button1_Click(object sender, EventArgs e)
{
    Form2.tabControl1.SelectedIndex = 0;
}

private void Button2_Click(object sender, EventArgs e)
{
    Form2.tabControl2.SelectedIndex = 1;
}

答案 3 :(得分:0)

在公共静态类中创建一个公共变量,当您单击Form1中的按钮时,只需更改此变量的值以指示已单击某个按钮(例如,您可以设置公共变量的值)单击button1时为0,单击button2时为1 ...等。)

现在在Form2中,读取该变量的值,并根据该值激活合适的Tab。

答案 4 :(得分:0)

在Form1上为每个按钮的点击事件添加处理程序:

foreach (Form f in Application.OpenForms)
        {
            if (f == Form2)
            {
                f.SelectTab(0)
            }
        }

在Form2上添加一个方法:

public void SelectTab(int tabIdx)
{
    this.TabControl1.SelectedIndex = tabIdx;
}