Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > хранить данные в TCheckedListView


Автор: Академик 21.6.2006, 11:39
subj там нет тагов и хранить объекты негде. посоветуйте решение плиз 

Автор: arilou 21.6.2006, 12:41
Это про Delphi что-ли?

Добавлено @ 12:50 
Навскидку такое решение: Hashtable (или Dictionary<K, T>) где ключ - узел дерева, а значение - твой объект. 

Автор: Академик 21.6.2006, 15:33
Очень опытный smile
пппопдбробнее, как это связать вместе? 

Автор: arilou 21.6.2006, 15:36
Академик, че тут связывать? Завел hashtable, при добавлении узла в дерева добавляешь соотв. запись в hashtable. Надо получить Tag для узла - обращаешься к hashtable[узел].

 smile  

Автор: Хоббит 21.6.2006, 17:40
может он не знает что такое хеш таблица... ты ему сначала обьяснять начни smilesmile 

Автор: Ch0bits 21.6.2006, 23:13
arilou
При чём тут деревья, это же не TreeView. 

Автор: Void 21.6.2006, 23:24
Обсуждалось буквально на днях (только для ComboBox). Data binding спасет отца русской демократии. 

Автор: Ch0bits 21.6.2006, 23:34
Цитата(Академик @  21.6.2006,  12:39 Найти цитируемый пост)
там нет тагов и хранить объекты негде. посоветуйте решение плиз

То что нет тегов не проблема! Хранить можно любой объек имеющий метод ToString(), а его имеют все объекты.  smile 
ListBox использует ToString() для отображения значений в своих строчках и если его перекрыть, то можно задавать видимое значение и хранить любые данные внутри объекта.
Вот пример:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication332
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void AddItem_Click(object sender, EventArgs e)
        {
            valuedChListBox1.Items.Add(new SomeStructure("Значение", 123, "бла-бла", new Button()));
        }
    }

    public struct SomeStructure
    {
        #region Это наши хранимые данные
        public int A;
        public string S;
        public object Obj;
        #endregion

        private string Text; // Содержит строку выводимую в ListBox

        public SomeStructure(string Text, int A, string S, object Obj)
        {
            this.Text=Text;
            this.A = A;
            this.S = S;
            this.Obj = Obj;
        }

        public override string ToString()
        {
            return Text;
        }
    }
}


Добавлено @ 23:37 
Пока писал, Void уже запостил.  smile 
Цитата(Void @  22.6.2006,  00:24 Найти цитируемый пост)
буквально на днях

Где? 

Зы: я до сих пор не в курсе что такое data binding и кто такой "отец русской демократии"?  smile  

Автор: Академик 22.6.2006, 06:56
Цитата(Ch0bits @  21.6.2006,  23:34 Найти цитируемый пост)
отец русской демократии

Видимо я.  smile 

Ch0bits, спасибо что обяснил все на пальцах, а я репу чешу думаю как по совету arilou на дотнет STL привинтить? Эка незадача. Спасибо! Наберу 100 постов атблагадарю!

arilou, Void вам тоже спасибо за идет!  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)