在c#中,我有三个窗体,第二个和第三个窗体的textbox1都要获取窗体一得textbox1的text属性
这是我写的但是不是得不到结果就是弹出异常,有请各位大虾了。在窗体一中:privatevoidbutton1_Click(objectsender,EventArgse){...
这是我写的但是不是得不到结果就是弹出异常,有请各位大虾了。
在窗体一中:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog(this );
}
窗体二:
private void Form2_Load(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
this.textBox1.Text = frm1.textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
Form3 frm3 = new Form3(this );
frm3.ShowDialog( );
}
窗体三:
public partial class Form3 : Form
{
Form3 frm1;
public Form3(Form3 f1)
{
InitializeComponent();
frm1 = f1;
}
private void Form3_Load(object sender, EventArgs e)
{
this.textBox1.Text = frm1.textBox1.Text;
frm1.textBox1.Text = this.textBox1.Text;
} 展开
在窗体一中:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog(this );
}
窗体二:
private void Form2_Load(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
this.textBox1.Text = frm1.textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
Form3 frm3 = new Form3(this );
frm3.ShowDialog( );
}
窗体三:
public partial class Form3 : Form
{
Form3 frm1;
public Form3(Form3 f1)
{
InitializeComponent();
frm1 = f1;
}
private void Form3_Load(object sender, EventArgs e)
{
this.textBox1.Text = frm1.textBox1.Text;
frm1.textBox1.Text = this.textBox1.Text;
} 展开
8个回答
展开全部
建议用get{}方法来做。因为你都是用FORM1的TEXT值,这个不难
现在FORM1 定义一个静态变量来保存你要传递的值
下面是Form1代码:
private static string strMyText;
public string getMyText
{
get
{
return strMyText;
}
}
private void button1_Click(object sender, EventArgs e)
{
strMyText = textBox1.Text.Trim();
Form2 F2 = new Form2();
F2.ShowDialog();
}
在Form2中执行下面的代码:
private void Form2_Load(object sender, EventArgs e)
{
Form1 F1 = new Form1();
textBox1.Text = F1.getMyText;
}
就可以了! 至于Form3就同理了!
希望可以帮到你!
现在FORM1 定义一个静态变量来保存你要传递的值
下面是Form1代码:
private static string strMyText;
public string getMyText
{
get
{
return strMyText;
}
}
private void button1_Click(object sender, EventArgs e)
{
strMyText = textBox1.Text.Trim();
Form2 F2 = new Form2();
F2.ShowDialog();
}
在Form2中执行下面的代码:
private void Form2_Load(object sender, EventArgs e)
{
Form1 F1 = new Form1();
textBox1.Text = F1.getMyText;
}
就可以了! 至于Form3就同理了!
希望可以帮到你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯,夸窗体访问控件的属性把控件的Modifilers属性改为public是可以的,应该不安全,但是要访问textBox里面输入的内容是不能的,只能访问到已经初始化的属性的值,
要通过事件想父窗体传值,父窗体可以通过子窗体构造函数给子窗体传值,仅个人理解,可以试试,谢谢
要通过事件想父窗体传值,父窗体可以通过子窗体构造函数给子窗体传值,仅个人理解,可以试试,谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于你这种不会通过事件委托来做的人,估计让你去看也一下子你接受不了。
你可以在工程里专门添加一个类,里面全定义一些static的变量。
需要在多个窗口间传值时,就把这些静态变量做为中转站
你可以在工程里专门添加一个类,里面全定义一些static的变量。
需要在多个窗口间传值时,就把这些静态变量做为中转站
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
真不能夸窗体调用控件吗?
你试试这种方法:
吧textbox1设置为public类型的
然后再form1里面添加以下代码:
public static Form1 form1;
在初始化函数里面:
this=form1;
然后form2中就可以:
Form。form1.textbox1.text=this.textbox1.text
你试试这种方法:
吧textbox1设置为public类型的
然后再form1里面添加以下代码:
public static Form1 form1;
在初始化函数里面:
this=form1;
然后form2中就可以:
Form。form1.textbox1.text=this.textbox1.text
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哪有你这种写法的。跨窗体调用通常好的方法只有一个:事件!建议你先学学委托(特殊的事件)吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询