110,561
社区成员
发帖
与我相关
我的任务
分享
public partial class Form1 : Form
{
public Form1(int code) { }
public Form1()
{
InitializeComponent();
}
public class A : Form1
{
public A()// : base(0)
{
base.InitializeComponent();
}
public void B()
{
base.textBox1.Text = "changed";
base.comboBox1.SelectedIndex = 0;
}
}
private void Form1_Load(object sender, EventArgs e)
{
new A().B();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
public class A : Form1
{
public void B()
{
this.textBox1.Text = "changed";
}
}
但是你需要打开 textBox1 控件的“属性”窗,将 Modifier 属性改为 public。public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public TextBox MyTb1
{
get
{
return this.textBox1;
}
}
}
public class A : Form1
{
public void B()
{
this.MyTb1.Text = "changed";
}
}
public partial class Form1 : Form
{
public Form1(int code) { }
public Form1()
{
InitializeComponent();
}
public class A : Form1
{
//public A()
//{
// base.InitializeComponent();
//}
public void B()
{
base.textBox1.Text = "changed";
base.comboBox1.SelectedIndex = 0;
}
}
private void Form1_Load(object sender, EventArgs e)
{
//sender就是这个窗口
A a = sender as A;
if(a != null) a.B();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
new A().B();
MessageBox.Show("Form1.Handle: " + this.Handle.ToString());
}
}
public class A : Form1
{
public void B()
{
//MessageBox.Show("A.Handle: " + this.Handle.ToString());
MessageBox.Show("base.Handle: " + base.Handle.ToString());
}
}
获取到的窗体句柄是不同的,我估计是由于实例化 A 类的时候也调用了 Form1 的构造函数,所以 A 类中的 B 方法操作的并不是当前窗体的控件,而是另一个新窗体中的控件。
但是我想验证这个猜想是不是正确时,在B方法中加了this.Show();
之后却造成一直循环调用Form1和A类的情况,最后A中报错:创建窗体句柄失败。[/quote]
不要企图在form1里再实例化form1自身,会造成无限递归调用
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
new A().B();
MessageBox.Show("Form1.Handle: " + this.Handle.ToString());
}
}
public class A : Form1
{
public void B()
{
//MessageBox.Show("A.Handle: " + this.Handle.ToString());
MessageBox.Show("base.Handle: " + base.Handle.ToString());
}
}
获取到的窗体句柄是不同的,我估计是由于实例化 A 类的时候也调用了 Form1 的构造函数,所以 A 类中的 B 方法操作的并不是当前窗体的控件,而是另一个新窗体中的控件。
但是我想验证这个猜想是不是正确时,在B方法中加了this.Show();
之后却造成一直循环调用Form1和A类的情况,最后A中报错:创建窗体句柄失败。