日期:2014-05-19  浏览次数:21036 次

两个窗体间的传值问题
我要实现的功能是:点击A窗体的按钮,弹出B窗体,在B窗体中输入值,点确定,在A窗体的ListBox中能显示B窗体中的值.
看起来很简单的一个东西,可我就是没做出来,希望大家交交我.


------解决方案--------------------
private void button1_Click(object sender, EventArgs e)
{
Form vForm = new Form();
TextBox vTextBox = new TextBox();
Button vButton = new Button();
vTextBox.Parent = vForm;
vButton.Parent = vForm;
vButton.Text = "确定 ";
vButton.Top = vTextBox.Height + 2;
vButton.DialogResult = DialogResult.OK;
if (vForm.ShowDialog() == DialogResult.OK)
{
if (listBox1.Items.IndexOf(vTextBox.Text) < 0)
{
listBox1.Items.Add(vTextBox.Text);
}
}
}

------解决方案--------------------
=====================给你 一个 小参考=========================
2个窗体 互相传值

namespace ReadFile
{
public partial class Form2 : Form
{


public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

Form3 fm = new Form3();
fm._val = this.textBox1.Text;
if (fm.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = fm._val;
}


}
}
}


namespace ReadFile
{
public partial class Form3 : Form
{
// 定义一个属性
public string _val;
public string val
{
get
{
return _val;
}
set
{
_val = value;
}
}

public Form3()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
_val = this.textBox1.Text;
this.DialogResult = DialogResult.OK;
this.Hide();
}

private void Form3_Load(object sender, EventArgs e)
{
this.textBox1.Text = _val;
}


}
}


------解决方案--------------------
你就在new b窗体时把a中的listbox通过构造函数传去啊
------解决方案--------------------
有两个办法可以解决这个问题,
方法一,将窗体A中控件属性设置为Public共享,在B窗体中直接获得A窗体的值,
方法二,在B窗体中重载一个构造函数,参数加入为A窗体的的值,这样在A窗体中打开B窗体时候,只要在new时就可以实现

个人认为第二个方法好些