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

解决方案 »

  1.   

    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.   

    我弄了两个窗体frmList和frmUrl,frmList上有lstList(列表),frmUrl上有txtUrl,当我点frmUrl上的确定时执行
    private void btnOk_Click(object sender, EventArgs e)
    {
        frmList fL = new frmList();
        fL.Addfile(txtUrl.Text);
        //this.Close();
    }
    如下是frmList的Addfile方法
    public void Addfile(string file)
    {
        this.lstList.Items.Add(file);
    }
    为什么txtUrl中的值不能传到lstList中呢?
      

  3.   

    =====================给你 一个 小参考=========================
    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;
            }      
        }
    }
      

  4.   

    你就在new  b窗体时把a中的listbox通过构造函数传去啊
      

  5.   

    有两个办法可以解决这个问题,
    方法一,将窗体A中控件属性设置为Public共享,在B窗体中直接获得A窗体的值,
    方法二,在B窗体中重载一个构造函数,参数加入为A窗体的的值,这样在A窗体中打开B窗体时候,只要在new时就可以实现个人认为第二个方法好些
      

  6.   

    Form1的:   namespace WindowsApplication103
    {
        public partial class Form1 : Form
        {
            public string TF 
            {
                set { this.textBox1.Text = value; } 
            }
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e) //登陆
            {
                Form2 ff2 = new Form2(this);
                ff2.Show();
            }
        }
    }
    Form2 :namespace WindowsApplication103
    {
        public partial class Form2 : Form
        {
            Form1 ff3;
            public Form2(Form1 ff3)
            {
                this.ff3 = ff3;
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                ff3.TF = this.textBox1.Text + this.textBox2.Text;
                this.Close();
            }
        }
    }