Передача объектов между объектами winform - PullRequest
3 голосов
/ 13 января 2010

Я надеюсь, что кто-то сталкивался с таким же затруднением, с которым я столкнулся. Я занимаюсь разработкой приложения .NET 2.0 Winforms и пытаюсь обменяться объектами данных ADO.NET между двумя различными формами winforms.

У меня есть кнопка в форме form1, которая при нажатии создает экземпляр другого объекта формы и показывает его модально. Вторая модальная форма позволяет пользователю выполнить некоторые критерии поиска и вернуть данные ado.net с результатами поиска.

Когда пользователь закрывает модальную форму, я хочу, чтобы Datatable результатов поиска возвращался в исходную форму, но пока я шагал по коду, я вижу исходный пустой тип данных.

Итак, во второй форме есть собственный конструктор, в котором я пытаюсь передать данные, которые меня интересуют в обмене между обеими формами.

Насколько я понимаю, когда вы передаете объект в качестве параметра в функцию или конструктор, вы находитесь в режиме «по ссылке» и манипулируете исходным содержимым объекта? Но это не то, что, кажется, здесь происходит. Любое понимание будет высоко ценится.

спасибо заранее.

// 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 ]

1 голос
/ 13 января 2010

Вам необходимо использовать this._searchResults.merge (searchResults);

1 голос
/ 13 января 2010

Передача по ссылке - это не то же самое, что передача по значению , но в этом случае я не думаю, что вам нужно об этом беспокоиться.

Вы не показали, как вы пытаетесь "получить" результаты поиска впоследствии. Пока все выглядит хорошо, но если бы вы могли показать часть «прохождения назад», это помогло бы. Короткий, но полный пример (например, просто добавление фиктивной записи в DataTable) поможет еще больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...