我想在Form3
中设置一个按钮,更改Form1
和Form2
中的标签文字。
我已经让它有点工作,但为了更改标签我必须用鼠标点击它。这是我目前在表单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;
}
如何制作它以便我不需要按标签来改变它?
答案 0 :(得分:4)
由于你刚开始学习,我不会参加活动和代表。
我的示例演示了如何直接从Form1
操纵Form2
上的控件。您应该能够轻松地自己解决Form3
这个问题,并且这是一个很好的理解实践。
(我想声明在表单之间传递数据或操纵控件有很多不同的方法/技巧,我想这是最容易理解为初学者的方法/技术,因为这是最简单的方法所有)
首先,我们将label1
的修饰符设为公开(因此我们可以在另一个类中找到它),如下所示:
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();
}
}
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
控件。
答案 1 :(得分:0)
我认为你只需要在表格1和2上重触一次。
设置标签文字后,请尝试拨打tableView.reloadData()
或者你可以在form1和form2上调用refresh,如果它更容易(虽然有点沉重)
这将指示表单根据当前表单中数据的设置方式重绘其可视化表示。
更新
你需要稍微颠倒你的逻辑。
不需要对形式1和形式2中的形式3表示敬意,而是需要从形式3中引用形式1和形式2.(哇哇这么多形式)
那么你的按钮点击方法就像这样
labelControl.Refresh()