如何在form3中操作form2的标签

时间:2016-11-16 00:14:11

标签: c#

我想在Form3中设置一个按钮,更改Form1Form2中的标签文字。 我已经让它有点工作,但为了更改标签我必须用鼠标点击它。这是我目前在表单1和表2中的代码:

label1.Text = Form3.myNameClass.myName;

这是表格3中的代码

public class tournamentNameClass
{
    public static string tournamentName;
}

public void button1_Click(object sender, EventArgs e)
{
    myNameClass.myName = textBox3.Text;
}

如何制作它以便我不需要按标签来改变它?

2 个答案:

答案 0 :(得分:4)

由于你刚开始学习,我不会参加活动和代表。

我的示例演示了如何直接从Form1操纵Form2上的控件。您应该能够轻松地自己解决Form3这个问题,并且这是一个很好的理解实践。

(我想声明在表单之间传递数据或操纵控件有很多不同的方法/技巧,我想这是最容易理解为初学者的方法/技术,因为这是最简单的方法所有)

Form1 Designer

首先,我们将label1的修饰符设为公开(因此我们可以在另一个类中找到它),如下所示:

label1 designer

后面的Form1代码
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // With the keyword "this" we pass in Form1, the current instance we are in
        Form2 form2 = new Form2(this);
        form2.Show();
    }
}

后面的Form2代码
public partial class Form2 : Form
{
    private Form1 _form1;

    public Form2(Form1 form1)
    {
        _form1 = form1;
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        _form1.label1.Text = "lets change the text";
    }
}

我们在构造函数中完全传递Form1,这很容易就是label1控件。

结果

result

答案 1 :(得分:0)

认为你只需要在表格1和2上重触一次。

设置标签文字后,请尝试拨打tableView.reloadData()

或者你可以在form1和form2上调用refresh,如果它更容易(虽然有点沉重)

这将指示表单根据当前表单中数据的设置方式重绘其可视化表示。

更新

你需要稍微颠倒你的逻辑。

不需要对形式1和形式2中的形式3表示敬意,而是需要从形式3中引用形式1和形式2.(哇哇这么多形式)

那么你的按钮点击方法就像这样

labelControl.Refresh()