Загрузить текстовые поля из массива - PullRequest
1 голос
/ 28 июля 2010

Моя форма содержит несколько строк текстовых полей. Первая строка называется от txtL000 до txtL009, вторая строка от txtL100 до txtL109 и так далее. Под каждой из этих строк находится другая строка текстовых полей с именами от txtT000 до txtT009 и т. Д. Когда пользователь открывает форму, я хочу загрузить текстовые поля с именем txtL ... со строками в массиве, в зависимости от того, что находится в соответствующем текстовом поле с именем txtT..0. Например, если в txtT000 есть «land», я хочу загрузить txtL000 через txtL009 со строками из массива arrLand. Если в нем есть «точка», я хочу загрузить txtL000 через txtL009 со строками из массива arrPoint. Какой самый эффективный способ сделать это?

1 Ответ

1 голос
/ 28 июля 2010

Самым простым способом, который я могу придумать, является использование словаря для хранения массивов:

//Use any collection you prefer instead of 'List' if you want.
Dictionary<String, List> arrays = new Dictionary<String, List>();

private void OnTextChanged(object source, EventArgs e)
{
    if (source == txtT000)
        loadTextBoxes(txtT000.Text, txtL000, txtL001, txtL002, 
            txtL003, txtL004, txtL005, txtL006, txtL007, txtL008,
            txtL009); 
    //etc
}

private void loadTextBoxes(string key, params TextBox[] textboxes)
{
    List myList = arrays[key];

    //Check for both constraints on the loop so you don't get an exception
    //for going outside either index of textboxes array or myList.
    for (int i = 0; ((i < textboxes.length) && (i < myList.Count)); i++)
        textboxes[i].Text = myList[i].ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...