主窗口点查询按钮 进入另一个窗口。在该窗口中输入要查询的条件,
问题是 点确定按钮把查询的结果在主窗的DataGridView中显示 这个要如何实现呢
求代码

解决方案 »

  1.   

    这个比较简单的。
    假设你的主窗口名为frmMain,查询窗品名为frmQuery
    建议将数据操作类都放在主窗体中。第一步:在输入查询条件的窗口返回一个SQL查语语句就可以。
    在frmQuery窗口定义一个属性:
    private string getSQL;
    public string GetSQL
    {
       set{getSQL = value;}
       get{return getSQL;}
    }
    在frmQuery的确定按钮上写下相关代码
    private void btnOK_Click(object sender, EventArgs e)
    {
       //你所组合得到的查询条件
         string sql = "查询条件组合";
        getSQL = sql;
        this.DialogResult = DialogResult.OK;
    }
    第二步:在主窗口加载和查询按钮中分别写下如下代码:
    在主窗体中定义相关数据操作类,假设用的是sql serverprivate SqlConnection conn = null;
    private SqlDataAdapter da = null;//在窗体加载时初始化相关类
    private void frmMain_Load(object sender,EventArgs e);
    {
        try
        {
            conn = new SqlConnection("你的数据库连接字符串");
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
            return;
        }
    }//查询按钮
    private void btnQuery_Click(object sender, EventArgs e)
    {
        frmQuery frm = new frmQuery();
        if (frm.ShowDialog() == DialogResult.OK)
        {
            string sql = frm.GetSQL;        
            da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            if (ds!=null) this.DataGridView1.DataSource = ds.Tables[0];
        }
    }
      

  2.   

    方法很多 可以用属性 但是要设置为static
    也可以在利用构造方法
      

  3.   

    回复2楼
    string sql = frm.GetSQL;这句出错 
    并不包含GetSQL的定义   frmQuery 窗口 里面已经定义过了 为什么frmMain里还是会说没定义呢
    平时也经常遇到类似情况。 
      
      

  4.   

    你看下两个窗体是不是在同一个命名空间下,如果不是则需要引用frmQuery的名字空间,或者直接将frmQuery添加到与frmMain同一个工程目录下
      

  5.   

    你看下两个窗体是不是在同一个命名空间下,如果不是则需要引用frmQuery的名字空间,或者直接将frmQuery添加到与frmMain同一个工程目录下
      

  6.   

    1、可以利用委托的方式实现
    2、或者利用自定义一个Event实现