您的位置:首页 > 其它

WinForm使用string传值的问题

2008-07-23 12:55 260 查看
窗体之间的值传递,网上都有很多方法解决。比较正统的方法都是修改弹出窗口的构造函数,为其添加一些参数,这些参数就是窗体之间要传递的值。如果想在弹出窗体直接修改主窗体的内容,一般都将要修改的数据做成引用类型的参数传递过去。但是遇到string类型数据这种方法可能无效。

以下是弹出窗体的代码:
public partial class PopForm : Form
{
//弹出窗口的成员
private string m_strChange;

//修改后的构造函数
public PopForm (ref string pStr)
{
InitializeComponent();
m_strChange= pStr;
}

//修改引用主窗口的字符串
private void Button1_Click(object sender, EventArgs e)
{
m_strChange+="456";
this.Close();
}
}

主窗体调用的代码:
string temp="123";
PopForm pop=new PopForm(ref temp);
pop.ShowDialog();


这种情况下,主窗口的temp不会变成“123456”。因为虽然在这里字符串是引用类型,但是由于字符串的操作十分特殊,在赋值操作中是重新申请一段内存来记录新的内容,所以即使用来引用类型,但是仍然不能改变主窗口的值。

如何解决这个问题呢?我们可以使用StringBuilder来代替string。

弹出窗体代码:
public partial class PopForm : Form
{
//弹出窗口的成员
private StringBuilder m_strChange;

//修改后的构造函数
public PopForm (ref StringBuilder pStr)
{
InitializeComponent();
m_strChange= pStr;
}

//修改引用主窗口的字符串
private void Button1_Click(object sender, EventArgs e)
{
m_strChange.Append("456");
this.Close();
}
}
主窗体调用代码:
StringBuilder temp="123";
PopForm pop=new PopForm(ref temp);
pop.ShowDialog();

这样执行完PopForm后,temp就变成“123456”了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: