Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Загрузка Xml-файла в ComboBox

Ответить
Настройки темы
.NET - [решено] Загрузка Xml-файла в ComboBox

Аватара для Hector

Misanthrope


Сообщения: 474
Благодарности: 38


Конфигурация

Профиль | Отправить PM | Цитировать


есть xml-файл:
Код: Выделить весь код
<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user id="1">
    <name>Den</name>
    <pwd>456</pwd>
  </user>
  <user id="2">
    <name>John</name>
    <pwd>123</pwd>
  </user>
</users>
это просто список учетных записей для авторизации.

существует форма, такого вида:


собственно задача, при загрузке формы надо, чтобы имена юзеров загружались в ComboBox(слева), а в TextBox был пароль того юзера, что выбран в ComboBox и естественно при смене пользователя пароль тоже менялся

я пытался сделать так:
Код: Выделить весь код
// при загрузке формы подключаю файл с учетками
  private void manager_Load(object sender, EventArgs e)
        {
          
                usersList.Text="Список пользователей";
                pwdCurUser.Text = "Пароль";
              // загружает документ с аккаунтами  
                XmlDocument xd = new XmlDocument();

                xd.Load("acc.xml");
                
                // Создает и заполняет список по тегу "user"
                XmlNodeList list = xd.GetElementsByTagName("user"); 
                а дальше проблема
        }
я не знаю, какими методами загрузить информацию в textbox и что бы она соответствовала combobox
при помощи поиска получился вариант:
Код: Выделить весь код
               // переменные для элементов
                XmlElement[] name = new XmlElement[list.Count];
                XmlElement[] pwd = new XmlElement[list.Count];
                for (int i = 0; i < list.Count; i++)
                {
                    name[i] = (XmlElement)xd.GetElementsByTagName("name")[i];      // имя в переменную  
                    pwd[i] = (XmlElement)xd.GetElementsByTagName("pwd")[i];   // пароль в переменную  
                }
                for (int i = 0; i < list.Count; i++)
                {
                    usersList.Items.Add(name[i].InnerText);
                    pwdCurUser.Lines[i]=pwd[i].InnerText;
                }
но он не работает, генерирует исключение, о выходе за границы индекса массива (идея была в SelectedIndexChanged при смене пользователя подставлять соответствующую строку из Lines[i], но видимо, я не так что-то понял)

-------
Information must be free!
Нет границ, есть только препятствия


Отправлено: 03:05, 02-02-2012

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


можно так

Код: Выделить весь код
        XmlNodeList list;
        XmlElement[] name;
        XmlElement[] pwd;
        
        private void manager_Load(object sender, EventArgs e)
        {
            usersList.Text="Список пользователей";
            pwdCurUser.Text = "Пароль";
            // загружает документ с аккаунтами  
            XmlDocument xd = new XmlDocument();

            xd.Load("acc.xml");
                
            // Создает и заполняет список по тегу "user"
             list = xd.GetElementsByTagName("user");

             name = new XmlElement[list.Count];
             pwd = new XmlElement[list.Count];

            for (int i = 0; i < list.Count; i++)
            {
                name[i] = (XmlElement)xd.GetElementsByTagName("name")[i];      // имя в переменную  
                pwd[i] = (XmlElement)xd.GetElementsByTagName("pwd")[i];   // пароль в переменную  
            }

            for (int i = 0; i < list.Count; i++)
            {
                usersList.Items.Add(name[i].InnerText);
            }

        }

        private void usersList_SelectedIndexChanged(object sender, EventArgs e)
        {
           int i = usersList.SelectedIndex;
           pwdCurUser.Text = pwd[i].InnerText;
        }
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:18, 02-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


При считывании атрибутов не плохо было бы добавить ещё проверку существования атрибутов.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 15:17, 02-02-2012 | #3


Аватара для Hector

Misanthrope


Сообщения: 474
Благодарности: 38

Профиль | Отправить PM | Цитировать


а можно как-то обойтись без лишних массивов name и pwd, загрузив в combobox весь list?

-------
Information must be free!
Нет границ, есть только препятствия


Отправлено: 15:52, 02-02-2012 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Hector, а зачем вообще Combobox? В TreeView XML очень удачно загружается и готовых примеров куча.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 04:41, 03-02-2012 | #5


Аватара для Hector

Misanthrope


Сообщения: 474
Благодарности: 38

Профиль | Отправить PM | Цитировать


Delirium, задание такое

-------
Information must be free!
Нет границ, есть только препятствия


Отправлено: 13:42, 03-02-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Загрузка Xml-файла в ComboBox

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
7 / 2008 R2 - dot1x + xml profile + unattend.xml HaeMHuK Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 20-10-2011 12:43
Delphi - [решено] Присвоение имени из ComboBox при копировании файла OkSherd Программирование и базы данных 2 07-09-2011 13:29
[решено] проверка XML-файла на соответствие XML schema в IE 6 и Firefox 2 dimait Вебмастеру 4 23-08-2007 02:02
Схема для XML файла Skynet Программирование и базы данных 3 22-03-2005 14:57
Как получить данные из xml-файла? ptt Программирование и базы данных 1 14-10-2004 09:45




 
Переход