WinForm使用string传值的问题
2008-07-23 12:55
260 查看
窗体之间的值传递,网上都有很多方法解决。比较正统的方法都是修改弹出窗口的构造函数,为其添加一些参数,这些参数就是窗体之间要传递的值。如果想在弹出窗体直接修改主窗体的内容,一般都将要修改的数据做成引用类型的参数传递过去。但是遇到string类型数据这种方法可能无效。
以下是弹出窗体的代码:
主窗体调用的代码:
这种情况下,主窗口的temp不会变成“123456”。因为虽然在这里字符串是引用类型,但是由于字符串的操作十分特殊,在赋值操作中是重新申请一段内存来记录新的内容,所以即使用来引用类型,但是仍然不能改变主窗口的值。
如何解决这个问题呢?我们可以使用StringBuilder来代替string。
弹出窗体代码:
这样执行完PopForm后,temp就变成“123456”了
以下是弹出窗体的代码:
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”了
相关文章推荐
- WindowsMobile(Winform)开发中的数据存储(解决在不同的Form中要调用对方的方法或者使用对方的数据问题)
- C#中使用多线程访问Winform中控件的若干问题
- stl::string 使用问题
- 关于使用request.querystring提取中文数据的问题
- STL string 类使用注意问题
- 使用stringRedisTemplate操作redis hash结构数据只能存储String类型的问题
- c#中使用多线程访问winform中控件的问题
- Winform 下使用WebBrowser的HTML编辑控件—WinHtmlControl 在win7 IE9下的问题
- 使用Testflight发现的NSString和String转换的问题
- WinForm开发中使用Lable自动换行的问题
- Delphi结构中使用String时遇到的内存泄露问题
- C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题
- 解决当字段不存在使用resultSet.getString("id")报异常的问题
- httpclient 在获取返回值时,使用getResponseBodyAsString触发警告的问题
- WinForm开发中使用Lable自动换行的问题
- 使用Volley StringRequest返回String 编码格式错误乱码问题解决
- c#中使用多线程访问winform中控件的若干问题
- 使用VS2005 CTP July调试WinForm的一个问题,解决方法与各位分享。
- android .string.xml使用String.format出现的问题
- 使用 Request.QueryString 接受参数时,跟编码有关的一些问题