在winform对象之间传递对象

时间:2010-01-13 17:49:14

标签: c# winforms

我希望有人遇到过我遇到过的同样困境。我正在开发.NET 2.0 Winforms应用程序,并尝试在两个不同的winforms之间交换ADO.NET数据表对象。

我在form1上有一个按钮,当单击时,实例化一个不同的表单对象并以模态方式显示它。第二种模式形式允许用户运行一些搜索条件并带回搜索结果的ado.net数据表。

当用户关闭模态表单时,我希望搜索结果的数据表能够传回原始表单,但是当我逐步执行代码时,我看到原始的空数据表。

所以第二种形式有一个自定义构造函数,我试图传递我感兴趣的数据表,在两种形式之间进行交换。

我的理解是,当您将对象作为参数传递给函数或构造函数时,您处于“按引用”模式并且您正在操作对象的原始内容?但这不是这里似乎发生的事情。任何见解都会非常感激。

提前感谢。

// button click handler code in Form1
 DataTable searchResults = new DataTable();
 Search searchForm = new Search(this.DropdownDataset, searchResults);
 searchForm.ShowDialog(this);

// custom winform constructor code in Form2
  public Search(DataSet dropdownData, DataTable searchResults)
  {
       this.InitializeComponent();
       this._dropdownData = dropdownData;
       this._lidSearch = new LIDSearch();
       this._searchResults = searchResults;
  }

2 个答案:

答案 0 :(得分:1)

Passing by reference isn't quite the same as passing a reference by value,但在这种情况下,我认为你不必担心它。

您之前没有展示过如何尝试“获取”搜索结果。到目前为止看起来还不错,但是如果你能展示出“回传”部分会有所帮助。一个简短而完整的例子(例如只是向DataTable添加一个虚拟记录)会有所帮助。

答案 1 :(得分:1)

您需要使用this._searchResults.merge(searchResults);