Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
tazer
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 83
1

Удаление экземпляра класса

10.01.2015, 11:31. Просмотров 1935. Ответов 5
Метки нет (Все метки)

нужно при помощи кнопки удалить выбранный в treeview экземпляр класса.

объявление массивов
C#
1
2
3
4
List<AnimalTip> tipAnimalList = new List<AnimalTip>();
        List<ClassAnimal> classAnimalList = new List<ClassAnimal>();
        List<GroupAnimal> groupAnimalList = new List<GroupAnimal>();
        List<FamilyAnimal> familyAnimalList = new List<FamilyAnimal>();
заполнение класса
C#
1
tipAnimalList.Add(new AnimalTip("Хордовые", "Тип в России — 4300 видов", "Вода, Суша"));
заполнение treeview
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
public void fillingTreeView()
        {
            treeView1.Nodes.Clear();
            int k = 0, l = 0;
 
            for (int i = 0; i < tipAnimalList.Count; i++)
            {
                AnimalTip AT = (AnimalTip)tipAnimalList[i];
                if (AT == null) continue;                
                treeView1.Nodes.Add(AT.Name_Tip);
                foreach(KeyValuePair<int,int> val in sootv3)
                    if (val.Value == i)
                    {
                        for (int j = 0; j < classAnimalList.Count; j++)
                        {
                            ClassAnimal CA = (ClassAnimal)classAnimalList[j];
                            if (CA == null) continue;
                            if (val.Key == j)
                            {
                                treeView1.Nodes[i].Nodes.Add(CA.Name_Tip);
                                foreach (KeyValuePair<int, int> val1 in sootv2)
                                    if (val1.Value == val.Key)
                                        for (int z = 0; z < groupAnimalList.Count; z++)
                                        {
                                            GroupAnimal GA = (GroupAnimal)groupAnimalList[z];
                                            if (GA == null) continue;
                                            if (val1.Key == z)
                                            {
                                                treeView1.Nodes[i].Nodes[k].Nodes.Add(GA.Name_Tip);
                                                foreach (KeyValuePair<int, int> val2 in sootv1)
                                                    if (val2.Value == val1.Key)
                                                        for (int m = 0; m < familyAnimalList.Count; m++)
                                                        {
                                                            FamilyAnimal FA = (FamilyAnimal)familyAnimalList[m];
                                                            if (FA == null) continue;
                                                            if (val2.Key == m)
                                                                treeView1.Nodes[i].Nodes[k].Nodes[l].Nodes.Add(FA.Name_Tip);
                                                        }
                                                l++; 
                                            }
                                        } 
                                k++;
                            }
                            l = 0;
                        }
                        
                    }
                k = 0; 
            }
           
        }
удаление выбранного экземпляра
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void button2_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Вы хотите удалить запись?", "Удаление", MessageBoxButtons.YesNo,
                MessageBoxIcon.Question);
 
            if (result == DialogResult.Yes)
            {
                int level = treeView1.SelectedNode.Level;
                string name = treeView1.SelectedNode.Text;
                int index = treeView1.SelectedNode.Index;
                switch (level)
                {
                    case 0:
                        {
                            tipAnimalList[index].Dispose();
                            tipAnimalList.RemoveAt(index);
                        }
                        break;
                }
                GC.Collect();
            }
        }
но вот беда, подчёркивает Dispose() и пишет что не был найден метод. в чём ошибка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2015, 11:31
Ответы с готовыми решениями:

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); ...

Создать экземпляр метода класса или доступ к методу из экземпляра класса
Всем доброго времени суток!) Уже месяца как 2 не сишарпил и подзабыл...собственно задача такая:...

Обращение к методу дочернего класса из экземпляра родительского класса
Как обратиться к методу дочернего класса из экземпляра родительского класса? К примеру здесь как...

Создание экземпляра класса
Народ, можете пожалуйста доходчиво объяснить в чем разница. есть, например, класс class MyClass...

Создание экземпляра класса
Как написать класс class Class1 Class1(int x1,int x2) { ........ } ...

5
Metall_Version
2122 / 1259 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
Завершенные тесты: 2
10.01.2015, 12:43 2
В этом и ошибка. У анималтип не реализован этот метод, да и не к чему он тут, нам удалить обьект из коллекции, это делается так
C#
1
tipAnimalList.RemoveAt(index);
0
tazer
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 83
10.01.2015, 14:08  [ТС] 3
Цитата Сообщение от Metall_Version Посмотреть сообщение
В этом и ошибка. У анималтип не реализован этот метод, да и не к чему он тут, нам удалить обьект из коллекции, это делается так
да спасибо, уже понял это, теперь вопрос в другом, как правильно передать параметр для нижестоящих уровней? т.е.
Удаление экземпляра класса

я хочу удалить бобров, но т.к. это первый элемент в ветви Грызуны, я передаю индекс 0, но получается он удаляет самый первый элемент этого уровня - настоящие лягушки
0
tazer
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 83
10.01.2015, 16:16  [ТС] 4
up!
0
malta87
8 / 8 / 6
Регистрация: 25.12.2013
Сообщений: 192
10.01.2015, 16:25 5
Вот посмотри это Заполнение listView из двух классов. Я там из одного класса удалял значения которые во втором вот так
C#
1
2
3
4
foreach (Class2 i in del)
            {
                info.RemoveAll(table_item => table_item.Name == i.Name);
            }
0
tazer
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 83
14.01.2015, 20:48  [ТС] 6
всё ещё нужна помощь, UP!!
0
14.01.2015, 20:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2015, 20:48

Передача экземпляра класса в метод
Всем привет случайно столкнулся с данной проблемой. Есть простой класс public class...

Возврат имени экземпляра класса
Есть класс CLASS1, у него 2 экземпляра- ex1 и ex2. Нужно что бы при вызове метода в одном из...

Передача экземпляра класса в параметр
как передать в метод (в качестве параметра) экземпляр класса, и как редактировать свойства этого...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru