winform 两个form之间传值问题

wyanwin 2009-06-10 04:18:40
form1中有button1,当点击button1时,调出form2,并把一个字符串aa传到form2中。
我这样写:

form1中:
private void button1_Click(object sender, EventArgs e)
{
Form2 xg= new Form2();
xg.mstr="aa";
xg.Show();

}
form2中:
public partial class Form2 : Form
{
private string m_str;
public string mstr
{
get { return m_str; }
set { this.m_str = value; }
}

public Form2()
{
InitializeComponent();
textbox1.Text=mstr;
}
怎么得不到值啊?是不是我把位置放错了还是少了什么?
哪位大侠帮忙给指点下,小女子不胜感激。
在线等。
...全文
98 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jie724201 2009-06-10
  • 打赏
  • 举报
回复
可以定义一个带有参数的构造函数


private string _text = string.empty;
public Form2(string text)
{
this._text = text;
}
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
我的分数太少了,要不然就过给点了。
呵呵。。。。。。
qqiuzaihui 2009-06-10
  • 打赏
  • 举报
回复
建议还是用5楼的方法更有效。
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
谢谢楼上的各位,加上this.Load += new System.EventHandler(this.Form2_Load);
可以得到值了。
非常感谢!
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
this.Load += new System.EventHandler(this.Form4_Load);
这个放在哪里?还有form4我要改成form2吗?
jishengzu 2009-06-10
  • 打赏
  • 举报
回复
public Form2()
{
InitializeComponent();
textbox1.Text=mstr;
this.Load += new System.EventHandler(this.Form2_Load);
}
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
请问你那句代码要放在哪里啊?
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
请问要在哪里怎样注册事件啊?
jishengzu 2009-06-10
  • 打赏
  • 举报
回复
就是这句 this.Load += new System.EventHandler(this.Form4_Load);
jishengzu 2009-06-10
  • 打赏
  • 举报
回复
没注册事件
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
放到load中不行,不知道为什么,我假如只在load中写 MessageBox.Show("aaaaaaaaaaaaaaaaaaaaaa");
运行都看不到结果,为什么我的load事件不执行哪?
掌握未来2019 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 wyanwin 的帖子:]
form1中有button1,当点击button1时,调出form2,并把一个字符串aa传到form2中。
我这样写:

form1中:
private void button1_Click(object sender, EventArgs e)
{
Form2 xg= new Form2();
xg.mstr="aa";
xg.Show();

}
form2中:
public partial class Form2 : Form
{
private string m_str;
public string mstr

[/Quote]



textbox1.Text=m_str;
hanhanmj 2009-06-10
  • 打赏
  • 举报
回复


public partial class Form2 : Form
{
private string m_str;
public string mstr
{
get { return m_str; }
set { this.m_str = value; }
}

private void Form2 _Load(object sender, EventArgs e)
{
//InitializeComponent();
textbox1.Text=m_str;
}
hanhanmj 2009-06-10
  • 打赏
  • 举报
回复


public partial class Form2 : Form
{
private string m_str;
public string mstr
{
get { return m_str; }
set { this.m_str = value; }
}

private void Form2 _Load(object sender, EventArgs e)
{
InitializeComponent();
textbox1.Text=m_str;
}




这样试试--------------
xxyping 2009-06-10
  • 打赏
  • 举报
回复
传值很简单。。。我们这样写一个吧
private void button1_Click(object sender, EventArgs e)
{
string mstr="aa";
Form2 xg= new Form2(mstr);
xg.ShowDialog();

}
form2中:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public Form2(string mstr)
{
InitializeComponent();
textbox1.Text=mstr;
}
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
我也有放着试过,也不行,好像load事件不执行啊
jishengzu 2009-06-10
  • 打赏
  • 举报
回复
原因是
Form2 xg= new Form2(); //在这里他执行了
public Form2() //这个方法而mstr未赋值
{
InitializeComponent();
textbox1.Text=mstr;
}

xg.mstr="aa";
xg.Show();
jishengzu 2009-06-10
  • 打赏
  • 举报
回复
textbox1.Text=mstr;
放到窗体Load事件中
wyanwin 2009-06-10
  • 打赏
  • 举报
回复
可有人在啊?大哥大姐们帮帮忙啊.我是菜鸟一个了,以前写web,没写过winform.

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧