2015-09-23 2 views
0
  • У меня есть 2 формы
  • У меня есть набор данных, заполненные значениями
  • Я опрашивать дц по форме 1 и вытаскивать результаты, что на 1 столбец информации
  • Эта информация хранится в массиве по форме 1
  • Я хочу передать эту информацию на второй форме (форма 2), в текстовых полях

есть ли способ, что я могу передать данные из массива мой второй fo rm без необходимости создавать несколько свойств и сеттеров?Пасс массив значений с помощью сеттер на 2-ой форме

Это мой код, я передаю только одно значение (столбец) в данный момент, потому что не могу решить, как передать несколько значений.

Спасибо.

Форма 1

// 
    //SEARCH BUTTON 
    // 
    private void searchBtn_Click(object sender, EventArgs e) 
    { 
     string searchFor = tbSearch.Text; 
     int results = 0; 
     DataRow[] returnedRows; 

     returnedRows = ds.Tables["Table_Data_1"].Select("parlour_number='" + searchFor + "'"); 
     results = returnedRows.Length; 

     if (results > 0) 
     { 
      foreach (DataRow returned in returnedRows) 
      { 
       MessageBox.Show(returned[1].ToString() + " " + returned[2].ToString()); 

       SearchResults frm2 = new SearchResults(); 
       frm2.ResultsProp = returned[1].ToString(); 
       frm2.Show(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("No results found"); 
     } 
    } 

Результаты поиска (форма 2)

public partial class SearchResults : Form 
{ 
    public SearchResults() 
    { 
     InitializeComponent(); 
    } 

    private string getResults(string result) 
    { 
     return parlourTb.Text = result; 
    } 

    private string passedResult; 
    public string ResultsProp 
    { 
     set { passedResult = getResults(value); } 
    } 
} 

ответ

0

Вы можете передать значение с помощью второй формы конструктор класса

SearchResults frm2 = new SearchResults(returned[1].ToString()); 
frm2.Show(); 

Обновление вашей второй формы в том, что путь:

public partial class SearchResults : Form 
{ 
    private string passedResult; 

    public SearchResults(string result) 
    { 
     passedResult = result; 
     InitializeComponent(); 
    }  
} 

Для последнего, вы можете добавить событие нагрузки для того, чтобы присвоить значение в текстовое поле:

private void SearchResults_Load(object sender, System.EventArgs e) 
{ 
    parlourTb.Text = passedResult; 
} 

EDIT: Передача нескольких значений.

List<string> results = new List<string>(); 

foreach (DataRow returned in returnedRows) 
{ 
    MessageBox.Show(returned[1].ToString() + " " + returned[2].ToString()); 
    results.Add(returned[1].ToString()); 
} 

SearchResults frm2 = new SearchResults(results); 
frm2.Show(); 

Вторая форма Код:

public partial class SearchResults : Form 
{ 
    private List<string> passedResult; 

    public SearchResults(List<string> results) 
    { 
     passedResults = results; // Then use your list. 
     InitializeComponent(); 
    }  
} 
+0

На самом деле, да, я вижу, что вы сделали там, и это будет работать для меня, хотя я все еще был бы заинтересован знать, если я могу использовать сеттер для этого тоже. – Nezz

+0

Да, вы можете, это все еще актуально. Однако с учетом того, что я понимаю из вашего вопроса, я бы сделал список строк, а затем передал все это во вторую форму. Проверьте редактирование на мой ответ. –