Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 17.08.2014
Сообщений: 10
1

Вывод данных из XML в TextBox через ListBox

17.08.2014, 17:35. Показов 2731. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всё хорошо работает но есть пару но...
Как сделать что бы при выборе элемента из listbox данные из xml отправлялись в textbox
name в 1
password в 2
И второй вопрос, как выводить в listbox только name без password.
Заранее спасибо за любую помощь.



Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
 
namespace DennySpyCam
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
            ListBoxInfo();
            FillMyListBox();
        }
 
        private void FormMain_Load(object sender, EventArgs e)
        {
 
        }
 
        private void ListBoxInfo()
        {
            if (!File.Exists("users.xml"))
                CreateXMLDocument("users.xml");
        }
        private void CreateXMLDocument(string filepath)
        {
            XmlTextWriter xtw = new XmlTextWriter(filepath, Encoding.UTF8);
            xtw.WriteStartDocument();
            xtw.WriteStartElement("users");
            xtw.WriteEndDocument();
            xtw.Close();
        }
 
        //ЗАПОЛНЯЕМ ФАЙЛ ДАННЫМИ ИЗ TEXTBOX
        private void WriteToXMLDocument(string filepath, string name, string pwd)
        {
            string id = MaxID(filepath);
            XmlDocument xd = new XmlDocument();
            FileStream fs = new FileStream(filepath, FileMode.Open);
            xd.Load(fs);
 
            // Создаем новую запись USER c аттрибутом следующего id  
            XmlElement user = xd.CreateElement("user");
            user.SetAttribute("id", id);
 
            // Создаем 2 поля логин и пароль  
            XmlElement login = xd.CreateElement("login");
            XmlElement pass = xd.CreateElement("password");
 
            // Создаем 2 записи логина и пароля  
            XmlText tLogin = xd.CreateTextNode(name);
            XmlText tPassword = xd.CreateTextNode(pwd);
 
            login.AppendChild(tLogin); // Забиваем значение логина в поле LOGIN  
            pass.AppendChild(tPassword); // Забиваем значение пароля в поле PASSWORD  
 
            // Забиваем поля LOGIN и PASSWORD в запись USER  
            user.AppendChild(login);
            user.AppendChild(pass);
 
            // ЗАбиваем запись в документ  
            xd.DocumentElement.AppendChild(user);
 
            fs.Close();         // Закрываем поток  
            xd.Save(filepath); // Сохраняем файл  
        }
        
        //ПОИСК ПОСЛЕДНЕГО ID
        private string MaxID(string filepath)
        {
            List<int> idList = new List<int>(); // Создаем массив айдишников  
            int id; // отдельно взятый айдишник  
 
            XmlDocument xd = new XmlDocument();
            FileStream fs = new FileStream(filepath, FileMode.Open);
            xd.Load(fs);
            XmlNodeList list = xd.GetElementsByTagName("user");
 
            // Если в базе есть записи  
            if (list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    XmlElement user = (XmlElement)xd.GetElementsByTagName("user")[i];
                    id = Convert.ToInt32(user.GetAttribute("id")); // Считывае ID  
                    idList.Add(id); // Добавляем его в массив  
                }
 
                // Ищем собсна максимальное значение.  
                int result = 0;
                foreach (int j in idList)
                    if (j > result)
                        result = j;
 
                result++; // Добавляем единуцу к максимальному значению  
                fs.Close(); // Закрываем поток  
                return result.ToString(); // Возвращаем результат  
            }
            else
            {
                fs.Close();
                return "1"; // Возвращаем единицу  
            }
        }
 
 
 
        private void FillMyListBox()
        { 
            listBoxCameraList.Items.Clear(); 
            FileStream fStream =
               new FileStream("users.xml", FileMode.Open,
                   FileAccess.Read, FileShare.ReadWrite);
 
            //Создаем объект XmlDocument и заполняем его данными   
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(fStream);
 
            //Пробегаем по всем элементам xml-документа   
            for (int i = 0; i < xmlDoc.DocumentElement.ChildNodes.Count; )
 
 
            //ChildNodes.Count; )
            {
                //Наполняем листбокс элементами со сзначениями   
                //внутреннего текста xml-документа   
                listBoxCameraList.Items.Add(
                   xmlDoc.DocumentElement.ChildNodes[i].InnerText);
                i++;
            }
 
            //Обязательно закрываем файлстрим   
            fStream.Dispose();//или fStream.Close();   
 
        }
 
 
        private void ReadXMLDocument()
        {
            string filepath = "users.xml";
            string pid = "1"; 
            string name, pwd; // Новые переменные имени и пароля  
 
            // Объявляем и забиваем файл в документ  
            XmlDocument xd = new XmlDocument();
            FileStream fs = new FileStream(filepath, FileMode.Open);
            xd.Load(fs);
 
            XmlNodeList list = xd.GetElementsByTagName("user"); // Создаем и заполняем лист по тегу "user"  
            for (int i = 0; i < list.Count; i++)
            {
                XmlElement id = (XmlElement)xd.GetElementsByTagName("user")[i];         // Забиваем id в переменную  
                XmlElement user = (XmlElement)xd.GetElementsByTagName("login")[i];      // Забиваем login в переменную  
                XmlElement pass = (XmlElement)xd.GetElementsByTagName("password")[i];   // Забиваем password в переменную  
 
                if (id.GetAttribute("id") == pid) // Если наткнулся на нужный айдишник  
                {
                    // Вставляем в переменные текст из тегов  
                    name = user.InnerText;
                    pwd = pass.InnerText;
 
                    // Заполняем поля на форме  
                    textBoxName.Text = name;
                    textBoxIP.Text = pwd;
                    break;
                }
                else
                {
                    // Чистим поля на форме  
                    textBoxName.Text = "";
                    textBoxIP.Text = "";
                }
            }
            // Закрываем поток  
            fs.Close();
        } 
 
 
 
 
 
 
 
        //Кнопка входа (выглядет как монитор)
        private void pictureBoxEnterIP_Click(object sender, EventArgs e)
        {
 
            ReadXMLDocument();
        
        }
 
 
 
 
 
        //Кнопка файла (выглядет как файл)
        private void pictureBoxFile_Click(object sender, EventArgs e)
        {
            try
            {
                WriteToXMLDocument("users.xml", textBoxName.Text, textBoxIP.Text);
                MessageBox.Show("Запись добавлена", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception er)
            {
                MessageBox.Show(er.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            FillMyListBox();
        
        
        
        }
 
        private void listBoxCameraList_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
    }
}


Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<users>
  <user id="1">
    <login>Дачия 47</login>
    <password>79.140.170.174/image</password>
  </user>
  <user id="2">
    <login>Буребиста 34</login>
    <password>79.140.170.34/image</password>
  </user>
</users>
Миниатюры
Вывод данных из XML в TextBox через ListBox  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2014, 17:35
Ответы с готовыми решениями:

Ввод массивов через множество textBox, подсчёт суммы, и вывод через listBox. Ошибка при вводе через textBox
Создал я кучу текст боксов, там происходит ввод каждого элемента массива. И вывод через листбокс ...

Вывод из XML файла в textbox на основании выбора в listbox
Есть xml файл: &lt;МатеринскиеПлаты&gt; &lt;плата&gt; &lt;производитель&gt;Biostar&lt;/производитель&gt; ...

Вывод данных из listbox в textbox по отдельности
Нужно сделать чтобы выбранные данные в listbox выводились в разных textbox

Ввод количества итераций через textBox, вывод в listBox, и график в Chart
Доброго дня. Прошу помощи в вводе количества итераций через textBox, выводе через listBox, и...

5
91 / 90 / 37
Регистрация: 05.08.2011
Сообщений: 428
17.08.2014, 18:17 2
Dennymemo, Выложите файлы проекта, будет более понятно или отправьте ссылку в лс.
Если на словах, то нужно отловить событие в ListBox'e SelectedIndex, и выполнять считывание из Xml и вставку в textbox'ы. Второй вопрос не понял, но скорее всего нужно сначала считать в переменную, обработать(удалить пароль), и ввести в листбокс.
1
0 / 0 / 0
Регистрация: 17.08.2014
Сообщений: 10
17.08.2014, 18:37  [ТС] 3
ORLENOK, Спасибо =). Насчёт второго вопроса. На скрине видно, что в листбоксе отображаются подряд name и password. Нужно исключить password. Сам проект прикрепил. Буду пробовать SelectedIndex.
Вложения
Тип файла: rar DennySpyCam.rar (3.14 Мб, 12 просмотров)
0
91 / 90 / 37
Регистрация: 05.08.2011
Сообщений: 428
17.08.2014, 20:36 4
Лучший ответ Сообщение было отмечено Dennymemo как решение

Решение

Dennymemo, Кажется, все что нужно было, сделал. Но... Можно добавить пустое поле, если просто нажать кнопку добавить. Мне кажется, не правильно, каждый раз при добавлении открывать файл и записывать в него данные. Логичнее, один раз, при запуске программы считать файл, в какую-то переменную, при работе изменять её, и при завершении программы его сохранять. Я сделал так, что выборе из списка, данные берутся из файла. Т.е. если фам нужно проверить множество "окон", каждый раз будет открываться файл.
Вложения
Тип файла: rar DennySpyCam.rar (3.14 Мб, 37 просмотров)
2
0 / 0 / 0
Регистрация: 17.08.2014
Сообщений: 10
17.08.2014, 23:03  [ТС] 5
ORLENOK, Большое спасибо )
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
18.08.2014, 12:30 6
Dennymemo,
Нету смысла по 100 раз дергать файл, загрузите в память данные и в SelectedIndexChanged проходите по коллекции, не надо там открывать файл
0
18.08.2014, 12:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2014, 12:30
Помогаю со студенческими работами здесь

Считывание данных из XML файла их сложение и вывод в TextBox
public partial class Form2 : Form { private readonly string TemplateFileName =...

Вывод картинок через привязку данных к ListBox
Вообщем есть классы: public class Photos : ObservableCollection&lt;Photo&gt; { public...

Как реализовать постраничный вывод данных из xml-файла через Repeater
Добрый вечер. Подскажите, как реализовать постраничный вывод данных из xml файла через repeater.

Вывод элементов из listbox в textbox
Здравствуйте, подскажите, как можно выводить по нажатию на кнопку элементы из listbox в textbox...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru