Сохранить с TextBox в ComboBox

420
13 января 2017, 07:18

Как из 2й формы значения введеные в TexBox'ы сохранить с именем Name(TextBox) в ComboBox. И как при выборе из ComboBox эти значения перенести в connectionString?

class Connection
    {
        private string connectionString;
        protected NpgsqlCommand command;
        protected NpgsqlConnection connection;
        protected NpgsqlDataReader reader;

        public PostgreConnection()
        {
            connectionString = @"Server ="+ ServerBox.Text +
                                ";Port="+ PortBox.Text +
                                ";Database="+ DatabaseBox.Text +
                                ";User ID=" + UserIDBox.Text +
                                ";Password=" + PasswordBox.Text;
            connection = new NpgsqlConnection(connectionString);
            command = connection.CreateCommand();
        }
    }
Answer 1

В тех случаях когда вам нужно вернуть из второй (диалоговой) формы какую-то информацию проще всего начать с создания вспомогательного класс (или структуры). Он должен полностью описывать те данные которые вы хотите использовать в первой форме.

Конкретно в вашем случае класс может быть примерно таким:

public class ConnectionData
{
    public string Server { get; set; }
    public int Port { get; set; }
    public string Database { get; set; }
    public int ID { get; set; }
    public string Password { get; set; }
    public override string ToString()
    {
        return string.Format
            ("Server = {0};Port={1};Database={2};User ID={3};Password={4}",
                Server, Port, Database, ID, Password);
    }
}

Насчет второй части вопроса. Вы можете хранить все ваши строки для подключения в списке (подробнее о BindingList в MSDN):

BindingList<ConnectionData> list = new BindingList<ConnectionData>();

дальше в конструкторе устанавливаете его в качестве источника данных для вашего ComboBox:

//тут заполнение списка предварительными данными
comboBox1.DataSource = list;

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

Теперь непосредственно об передачи данных со второй формы.

В диалоговой форме добавляете свойство:

public ConnectionData Connection_data { get; set; }

и при обработке клика по кнопке Save заполняете его информацией. В первой форме вам останется только сравнить Connection_data с null:

//...
Form2 form2 = new Form2();
form2.ShowDialog();
if (form2.Connection_data != null)
    list.Add(form2.Connection_data);

В новой версии C# (6.0) вы можете использовать нуль-условный оператор и интерполяцию строк. Подробнее о том, что было добавлено можно прочесть, например, на хабре

READ ALSO
Чат-Бот VK C#, парсинг страницы

Чат-Бот VK C#, парсинг страницы

Привет, задача такаяДобавляю бота в конференцию и пишу

621
WCF: получение IP клиента

WCF: получение IP клиента

Есть WCF-сервис, крутится на сервере на IISeОн должен логировать IP клиентов, подключившихся к нему

471
ThreadAbortException при вызове Response.End

ThreadAbortException при вызове Response.End

Проблема в том, что метод ResponseEnd вызывает исключение ThreadAbortException, которое мешает дебажить

349
Как перевести код с Matlab на C#?

Как перевести код с Matlab на C#?

Здравствуйте! Есть один довольно большой проект на MATLAB, который желательно перевести на С#

521