有二个窗口:主窗口,查询条件窗口
主窗口点击查询弹出查询条件窗口,然后键入查询条件,按查询,查询窗口消失, 
并将查询结果记录来填充第一个窗口。 我看到以前介绍说用 事件委托,请问如何做,最后能一个完全的实例代码。

解决方案 »

  1.   

    事件委托?
    有那么复杂嘛?
    写个返回DATETABLE类型的get和set就解决了。
      

  2.   

    用事件监听吧
    在查询条件窗口中定义public   event   EventHandler   EndSelectData; 
    在查询条件窗口的查询button1事件中 
    private   void   button1_Click(object   sender,   EventArgs   e) 

            if(EndSelectData!=null) 
                    { 
                            EndSelectData(sender,e);//sender可以是传给主窗口的参数 
                    } 

    在主窗口中定义查询条件窗口的地方把这个事件引出来,然后在事件中写 
    void 查询条件窗口_EndSelectData(object sender, EventArgs e)
    {
         string sql = (string)sender;
         //查询,得到想要的数据,填充控件,显示数据
    }
    试试看吧 
      

  3.   

    不需要用到事件/委托这些深奥的东西吧,直接传控件地址便成,如下例:
    //在查询窗体(Form2)定义构造函数接收主窗体的DataGridView
            DataGridView mainGrid;
            public Form2(DataGridView grv)
            {
                InitializeComponent();
                mainGrid = grv;
            } //查询窗体的"查询"按钮,把结果绑定到DataGridView
                DataTable dt;
                //...假设查询结果存到dt里
                grv.DataSource=dt;
                this.Close(); //主窗体里如此调用:
                Form2 frm=new Form2(dataGridView1);
                frm.ShowDialog();
            
      

  4.   

    1、在主窗体放一个存放记录的控件(如GridView、ListView),属性为公有;
    2、查询窗体查出结果,关闭,将结果作为数据源传给主窗体的控件,绑定,OK;
      

  5.   

    我的主窗口是 yuanliao_basic
                      private void start_search_Click(object sender, System.EventArgs e)
                      {  yuanliao_condi frm = new yuanliao_condi();
                        
                        frm.Icon = this.Icon;
                        frm.BackColor = this.BackColor;
                        frm.ShowDialog(); 
                      }
    查询窗口是 yuanliao_condi
     public event EventHandler EndSelectData;
     private  void   button1_Click(object sender, EventArgs  e)   
    {   
        if(EndSelectData!=null)   
        {   
           EndSelectData(sender,e); 
         }   
    }  
     在主窗口中定义查询条件窗口的地方把这个事件引出来,然后在事件中写   
    void   查询条件窗口_EndSelectData(object   sender,   EventArgs   e) 

              string   sql   =   (string)sender; 
              //查询,得到想要的数据,填充控件,显示数据 
    } 具体怎么做啊,本人是个莱鸟不好意思。
      

  6.   

    楼主的问题应该就是窗口之间传递值的问题吧.
    到网上找一下,很多的.
    举个例子:
    将你查询窗体中的条件传递回主窗口,然后在主窗体的查询Button事件中   
    {
      查询窗体.Show();
      在查询窗体弹出代码后面加上根据查询条件填充你的GridView的代码
    }
      

  7.   

    你在主窗口  yuanliao_basic 中怎么显示的数据
    我举个例子啊,如果你是用sql语句查询的,那么在
    查询窗口 yuanliao_condi 的button1_Click中,将查询的语句赋值给sender
      public   event   EventHandler   EndSelectData; 
      private     void       button1_Click(object   sender,   EventArgs     e)       
    {       
            if(EndSelectData!=null)       
            {       
                  string sql = "select * from table where name like '张%'";
                  sender  =  string;
                  EndSelectData(sender,e);   
              }       
    }  
    你在主窗口  yuanliao_basic 
    void       查询条件窗口_EndSelectData(object       sender,       EventArgs       e)   
    {   
                        string       sql       =       (string)sender;   
                        //查询,得到想要的数据,填充控件,显示数据   
    }