日期:2014-05-18  浏览次数:20714 次

初学者问题:几个方法中怎么传对象?
private void btnStart_Click(object sender, EventArgs e)
  {
  SqlConnection con = new SqlConnection(txtConnectionString.Text);
  con.Open();
  SqlDataAdapter sda = new SqlDataAdapter("select * from Forum", con);
  DataSet ds = new DataSet();
  sda.Fill(ds, "Forum");
  dataGrid1.DataSource = ds.Tables["Forum"];
  }

 private void btnSave_Click(object sender, EventArgs e)
  {
   
  }
请问一下大家,在Windows应用程序中,方法中怎么传对象呢?就象上面,我要在第二个单击事件里得到第一个方法里的ds对象,有什么简单的写法呢?谢谢大家!

------解决方案--------------------
你的dataGrid1 是winform 里面的DataGrid 吧 不是ASP.NET 的DataGrid (因为你没有用DataBind)

那样的话, 
你只要

DataSet ds = ((DataTable)dataGrid1.DataSource).DataSet;

就可以得到那个ds 的对象了
------解决方案--------------------
看你的代码,应该是两个事件中共用一个数据库资源,但你想在第二个事件中直接使用第一个事件里的对象是不行的,因为事件不能额外传递数据。你可以将数据库操作放到一个单独的类中,此类最好用单例模式。这样你在这个类中定义返回各种对象的方法就行了。

如你上面的例子只要:

private void btnStart_Click(object sender, EventArgs e) 

dataGrid1.DataSource = mydb.gettable("sql语句或表名"); 



gettable就是返回table对象的方法。