Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MyTreeNode в foreach, Unable to cast TreeNode в MyTreeNode 
:(
    Опции темы
Rockie
Дата 29.9.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: нет
Всего: 31



Здравствуйте! Помогите пожалуйста с сабжем. Так как необходимо добавить свои свойства к стандартному ноду TreeNode, наследую от него свой класс MyTreeNode. 
Код

    /// <summary>
    /// Отнаследуем MyTreeNode
    /// </summary>
    public class MyTreeNode : TreeNode
    {
        // выключим "..value never used.."
        #pragma warning disable 414

        /// <summary>раскрыт ли нод</summary>
        public bool isExpanded;

        /// <summary>
        /// cstr
        /// </summary>
        MyTreeNode()
        {
            isExpanded = false;
        }
        #pragma warning restore 414
    }

Далее в теле программы явно привожу TreeNode к MyTreeNode:
Код

tn = (MyTreeNode)treeView1.SelectedNode;

Вроде все нормально, а в foreach получаю ошибку
Код

     private MyTreeNode GetNode(TreeView tv, string name)
        {
            // Ищем в узлах первого уровня.
            foreach (MyTreeNode tn in tv.Nodes)
            {
                if (tn.Text == name)    
                    return tn;
            }
//..

Цитата

Unable to cast object of type 'System.Windows.Forms.TreeNode' to type 'TARGET.MyTreeNode'.



--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Partizan
Дата 30.9.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Rockie, самое быстрое решение - использовать for вместо foreach

Код

for (int i = 0; i < tv.Nodes.Count; i++)
{
    MyTreeNode tn = (MyTreeNode)tv.Nodes[i];
    if (tn.Text == name)    
         return tn;
}



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Bishop
Дата 30.9.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 3.6.2005
Где: Минск, Беларусь

Репутация: 6
Всего: 16



Rockie, ваш код будет работать, если в TreeView будут содержаться объекты MyTreeNode
Код
MyTreeNode t = new MyTreeNode();
t.Text = "Hello";
treeView1.Nodes.Add(t);

Вы же создаёте объекты TreeNode (вы не показали код создания, но очевидно что в tv TreeNode) и пытаетесь привести их к типу MyTreeNode. Это невозможно (см. Полиморфизм).
PM WWW ICQ   Вверх
Rockie
Дата 30.9.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: нет
Всего: 31



Все на порядок геморройнее чем казалось сначала. Как решу проблему отпишу.


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.