C# 子窗口调用父窗口对象和控件遇到的问题

父窗口和子窗口全部需要共用textbox1控件,我把控件改成public了。现在的问题是,主窗口在初始化的时候会赋子窗口窗口变量初值:如下:publicCarCarWin... 父窗口和子窗口全部需要共用textbox1控件,我把控件改成public了。
现在的问题是,主窗口在初始化的时候会赋子窗口窗口变量初值:如下:
public Car CarWindow; //定义送餐车窗口变量1
public Form1()
{
InitializeComponent();
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
CarWindow = new Car(); //给窗口变量赋初值
}
然后子窗口调用控件前又必须new一个主窗口:
public Car()
{
InitializeComponent();
Form1 frm = new Form1();
frm.textBox1.AppendText("1");
}
这样造成死循环,不知道该怎么做,学C#入门,毫无经验。。 如果要用父窗口的控件,必须先new实例么?这里的远离不是很懂,小弟分不多,愿全部送上
展开
 我来答
百度网友d242235
2016-05-06 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:820万
展开全部

这是个相互引用造成的StackOverflow错误,不要在子窗口的构造函数里new主窗口。Car窗体改造:

private Form1 mainForm;
public Car(Form1 main)
{    
    InitializeComponent();    
    mainForm = main;    
    main.textBox1.AppendText("1");
}

然后主窗体的构造函数改一下,把自己传递给Car。

CarWindow = new Car(this);  //给窗口变量赋初值
ashlll0
2016-05-06 · TA获得超过929个赞
知道小有建树答主
回答量:1354
采纳率:81%
帮助的人:556万
展开全部
主窗体打开子窗体时用
Form2 x= new Form2(this);
x.Show();
这样主窗体相当于传过去了

子窗体中
Form1 f;
public Form2(Form1 f)
{
InitializeComponent();
this.f = f;
}
这样f.textBox1.AppendText("1");就能调用了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式