Среда, 09.07.2025, 23:50
Приветствую Вас Гражданское лицо | RSS
[SEARCH_TITLE]
[SEARCH_FORM]
Главная | Каталог статей | Регистрация | Вход
TMS
Форма входа
Сайт переехал на новый адрес:
//alexcoder.ucoz.ru
На данном адресе новые материалы выкладываться не будут
Также по новому адресу доступен оффлайн архив материалов
Меню сайта

Категории раздела
Программирование [10]
Компъютеры [2]
WEB [2]
Веб-сервисы
Игры [2]
ОС [6]

Поиск

Облако тегов

Наш опрос
Оцените мой сайт
Всего ответов: 22

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Также использую Google Analystic

Мини-чат

KASPERSKY
Новости вирусоной активности

Реклама
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Главная » Статьи » Компъютеры » Программирование

    Mono Develp. XML & Node View. пример адресной книги
    Итак, сегодня мы сделаем простую телефонную книгу.
    Данные будем хранить в XML файле такой структуры
    Code

    <adressbook>  
      <record name="Вася Пупкин" telephone="+79174544534;+74545454547" email="vasya@mail.ru" adress="nodata" />  
    </adressbook>

    Всё вроде ясно.
    Ставим на форму HBoxLayout.
    Вниз - StatusBar
    Вверх - ScrolledWindow, в котором будет грид с данными
    Такой код :
    Code

    using System;
    using Gtk;
    using System.Xml;

    /*
      * Класс описывает строку в книге
      * В конструктор передаются : имя, телефон, мейл, адрес
      * для вывода
    */
    public class MyTreeNode : Gtk.TreeNode {
      string aname;
      string atelephone;
      string amail;
      string aadress;
       
      public MyTreeNode (string sname,string telephone,string mail,string adress)
      {
      name=sname;
      aname = sname;
      atelephone = telephone;
      amail = mail;
      aadress = adress;
      }
      [Gtk.TreeNodeValue (Column=0)]
      public string name;
      [Gtk.TreeNodeValue (Column=1)]
      public string telephone {get { return atelephone; } }
      [Gtk.TreeNodeValue (Column=2)]
      public string mail {get { return amail; } }
      [Gtk.TreeNodeValue (Column=3)]
      public string adress {get { return aadress; } }
    }

    public partial class MainWindow: Gtk.Window
    {  
       
      /*
      * Хранение данных идёт в этой переменной
      */
      Gtk.NodeStore store;
      Gtk.NodeStore Store {
      get {
      if (store == null) {
      store = new Gtk.NodeStore (typeof (MyTreeNode));
      }
      return store;
      }
      }
       
      /*
      * Функция загрузки данных
      */
      protected void LoadData(){
      XmlDocument xd = new XmlDocument();  
       
      /*
      * Очищаем хранилище
      */
      Store.Clear();
       
      /*
      * Создаём и настраиваем NodeView  
      */
      Gtk.NodeView view = new Gtk.NodeView (Store);
      scrolledwindow.Add(view);
      // Create a column with title Artist and bind its renderer to model column 0
      view.AppendColumn ("Имя", new Gtk.CellRendererText (), "text", 0);
      view.AppendColumn ("Телефон", new Gtk.CellRendererText (), "text", 1);
      view.AppendColumn ("Мейл", new Gtk.CellRendererText (), "text", 2);
      view.AppendColumn ("Адрес", new Gtk.CellRendererText (), "text", 3);
       
      /*
      * Создаём из файла data.xml, поток данных
      * и грузим из него xml документ
      */
      System.IO.FileStream fs = new System.IO.FileStream("data.xml", System.IO.FileMode.Open);  
      xd.Load(fs);  
      // Закрываем поток  
      fs.Close();
       
      String name="";
      String telephone="";
      String mail="";
      String adress="";
       
      XmlNodeList list = xd.GetElementsByTagName("record"); // Создаем и заполняем лист по тегу "user"
      /*
      * после чего обходим все элементы
      */
      for (int i = 0; i < list.Count; i++)  
      {
      XmlElement record=(XmlElement)xd.GetElementsByTagName("record")[i];
      name = record.GetAttribute("name");
      telephone = record.GetAttribute("telephone");
      mail = record.GetAttribute("email");
      adress = record.GetAttribute("adress");
      /*
      * Добавляем элемент
      */
      store.AddNode (new MyTreeNode (name,telephone,mail,adress));
      }
       
      /*
      * Отобразим данные
      */  
      view.ShowAll ();
       
      // Закрываем поток  
      fs.Close();
      }
       
      //конструктор окна
      public MainWindow (): base (Gtk.WindowType.Toplevel)
      {
      Build ();
      //грузим данные
      LoadData();
      }
       
      protected void OnDeleteEvent (object sender, DeleteEventArgs a)
      {
      Application.Quit ();
      a.RetVal = true;
      }
    }

    всё вроде ясно по комментам
    Скриншот работающей программы :
    Категория: Программирование | Добавил: alexKniaz (25.01.2010)
    Просмотров: 2249 | Теги: Mono, GTK#, XML | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]

    Copyright MyCorp © 2025
    Конструктор сайтовuCoz