2015-03-09 5 views
-2

Привет Я пишу программу, которая IO от databses и у меня есть следующие функции для чтения из базы данных и добавляет строки в выпадающем списке:Добавление элементы панели инструментов в качестве параметров

private void loadFromTuzel() 
    { 
     string constring = "Server=localhost;Database=ozturk;Uid=____;pwd=_____"; 
     MySqlConnection newCon = new MySqlConnection(constring); 
     string selectCommand = "SELECT * FROM ozturk.tuzelkisi"; 

     MySqlCommand cmd = new MySqlCommand(selectCommand, newCon); 

     MySqlDataReader myReader; 
     newCon.Open(); 
     myReader = cmd.ExecuteReader(); 
     while (myReader.Read()) 
     { 

      cbselected.Items.Add(myReader["name"].ToString() + " " + myReader["Surname"].ToString()); 
     } 
    } 

, как можно видеть из код программы загружает данные из базы данных в combobox ...

Мне нужно использовать эту функцию в другой форме, но вам нужно загрузить данные в другой комбинированный блок, и мне интересно, добавляет ли элемент панели инструментов как параметр для моей функции, так что это будет примерно так

private void myfunction(thecombobox parameter comes here) 
{ 
    // The execution code and than 
    // thecomboboxparameter.items.add...... 
} 

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

Благодаря

ответ

0

Да, это возможно, но вы бы гораздо лучше подходит, перемещая эту логику за пределами вашего кода пользовательского интерфейса в целом, и просто вернуть элементы из базы данных. Не передавайте ComboBox в параметр, но получайте результаты от этого метода, а в своем пользовательском интерфейсе свяжите все вместе.

Это основа Разделения проблем. Ваши ComboBoxes не должны заботиться о том, откуда поступают данные. Им все равно, что у них есть данные для отображения.

Для простого ответа на ваш вопрос, просто настроить свой метод так:

public static class Utilities 
{ 
    public static void loadFromTuzel(ComboBox cbo) 
    { 
     /// All of you other logic 
     while (myReader.Read()) 
     { 
      cbo.Items.Add(myReader["name"].ToString() + " " + 
       myReader["Surname"].ToString()); 
     } 
    } 
} 

Если следовать SoC, то вы бы что-то вроде этого:

public class Repository { 
    public IEnumerable<string> GetNamesFromTuzel() 
    { 
     // All of the same logic 
     while (myReader.Read()) 
     { 
      yield return myReader["name"].ToString() + " " + 
       myReader["Surname"].ToString(); 
     } 
    } 
} 
+0

Это работало, спасибо много! – Licentia

Смежные вопросы