“WindowsApplication6.Form1.textBox1”不可访问,因为它受保护级别限制

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:31:03
这个窗体是form2
private void button1_Click(object sender, EventArgs e)
{
Font f;
f = new Font(textBox1.Text, (float)Convert.ToInt32(textBox3.Text));
Form1.textBox1.Font = f;
}

面向对象编程的概念性错误:
1、textBox1是Form1的字段,不是属性,并且默认为private
2、它是实例的字段,不是Form1类的。
3、在Form2中,怎样找到已经打开的Form1实例?
修改:可以将textBox1设为public,并且设为static,但哪样你为什么要学面向对象?
应该为Form1增添一个属性,公开textBox1,并在实例化Form2时,传递给Form2实例一个Form1实例作为参数。
Form1中:
public TextBox TextBox1
{
get { return tx; }
set { tx = value; }
}
private void button_Click(object sender,EventArgs e)//假设用此按钮单击事件委托打开Form2(即实例化Form2)
{
Form2 frm2=new Form2(this);
frm2.Show();
}
Form2中:
Form1 frm1;
public Form2(Form1 f)//改动Form2构造函数
{
InitializeComponent();
frm1=f;
}
然后将你的错误语句改为frm1.TextBox1.Font=f;

将textBox1的Modifiers 设置为Public

一楼的说法每错