我有两个窗体,其中form1中有DataGrid控件,我向让form2中输入信息后点击查询按钮之后,我想让 form1中的DataGrid控件 
立即显示出查询结果来。 
代码怎么写。 
我发现传值是个问题! 
解决一下

解决方案 »

  1.   

    WinForm中一个窗口就是一个类,这样我们可以利用构造函数在类与类之间传递值. 
    假设您现在显示DataGrid的窗口是Form1,修改的窗口是Form2,Form2有一个TextBox1 
    在Form1里的按钮事件为 
    Form2   newFrm   =   new   Form2(this); 
    newFrm.textBox1.Text   =   dataGrid1[dataGrid1.CurrentCell.RowNumber,0].ToString(); 
    newFrm.ShowDialog(); 在Form2中定义Form1,并修改Form2构造函数如下 
    private   Form1   er; 
    public   Form2(Form1   Fm) 

    InitializeComponent(); 
    er   =   Fm; 
    }
      

  2.   

    1楼的不是返回的DataSet让我怎么绑定到form1中的datagrid去啊
      

  3.   

    在一楼的基础上就可以做到啊
    你在form2的查询按钮里这样写
    er.dataGrid1.DataSource = ...
    这里的er是1楼定义的
      

  4.   

    form2 并不需要返回一个 DataSet,只需要返回一个 变量,
    在 Form2 关闭的时候,Fomr1 得到这个变量,根据 这个变量去 查询 。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;
            }      
        }
      

  5.   

    form1的方法private void button1_Click(object sender, System.EventArgs e)
    {
    Form2 f=new Form2();
    f.Owner=this;
    f.ShowDialog();
    } public void bindGrid(DataTable dt)
    {
    this.dataGrid1.DataSource=dt;
    }form2的方法private void button1_Click(object sender, System.EventArgs e)
    {
    DataTable dt=new DataTable();
    dt.Columns.Add("TEST");
    DataRow row=dt.NewRow();
    row["TEST"]="test";
    dt.Rows.Add(row); Form1 f=(Form1)this.Owner;
    f.bindGrid(dt);
    }