我希望有人遇到过我遇到过的同样困境。我正在开发.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;
}
答案 0 :(得分:1)
Passing by reference isn't quite the same as passing a reference by value,但在这种情况下,我认为你不必担心它。
您之前没有展示过如何尝试“获取”搜索结果。到目前为止看起来还不错,但是如果你能展示出“回传”部分会有所帮助。一个简短而完整的例子(例如只是向DataTable
添加一个虚拟记录)会有所帮助。
答案 1 :(得分:1)
您需要使用this._searchResults.merge(searchResults);