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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выделить цветом узел TreeNode 
:(
    Опции темы
ДобренькийПапаша
Дата 24.7.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



При обычном выборе (select) узел подсвечивается... А при сворачивании\разворачивании нет... Я сделал где надо свойство checked=true (я так понял оно отвечает за выделение узла), но это не помогло, я стал сомневаться, что это нужное свойство, но порыл MSDN и подходящего не вижу...

Собсна, сабж...


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Lunatic2009
Дата 24.7.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 1.7.2009

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



Код

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
    treeView1.SelectedNode = e.Node;
}

private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
    treeView1.SelectedNode = e.Node;
}


Это сообщение отредактировал(а) Lunatic2009 - 24.7.2009, 21:49
PM   Вверх
ДобренькийПапаша
Дата 24.7.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



уахаха, во я жгу, перезанимался)))

з.ы. спасибо)))

Это сообщение отредактировал(а) ДобренькийПапаша - 24.7.2009, 22:22


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
ДобренькийПапаша
Дата 25.7.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Открываю тему, ибо мне надо выделить узел, не вызывая события AfterSelect().
А это:
Код

treeView1.SelectedNode = e.Node;

вызывает AfterSelect().


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
ДобренькийПапаша
Дата 25.7.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Проблема отвалилась, но есть другая проблема. У меня ListView наполняется инфой через TreeView (короче обычный проводник). К целевой информации типа списка студентов можно идти как работой с TreeView так и с ListView. Мне нужно, чтобы при двойном клике на определённой папке в ListView, разворачивался соответствующий узел, обнулялся и заполнялся ListView и выделялся цветом соответствующий узел. При сворачивании\разворачивании всё нормально, вообще собственно всё реализовано, но при таком коде:
Код

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

            // Ищем в подузлах.
            TreeNode node;
            foreach (TreeNode tn in tv.Nodes)
            {
                // Делаем поиск в узлах.
                node = FindNode(tn, name);
                // Если нашли,
                if (node != null)
                {
                    // то возвращаем.
                    return node;
                }
            }
            // Ничего не нашли.
            return null;
        }
        private TreeNode FindNode(TreeNode treenode, string name)
        {
            // Ищем в узлах первого уровня.
            foreach (TreeNode tn in treenode.Nodes)
            {
                // Если нашли,
                if (tn.Text == name)
                {
                    // то возвращаем.
                    return tn;
                }
            }

            // Ищем в подузлах.
            TreeNode node;
            foreach (TreeNode tn in treenode.Nodes)
            {
                // Делаем поиск в узлах.
                node = FindNode(tn, name);
                // Если нашли,
                if (node != null)
                {
                    // то возвращаем.
                    return node;
                }
            }
            // Ничего не нашли.
            return null;
        }
        private void ExploreTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            Path.Text = e.Node.FullPath;
            ExploreViewFill(e.Node);
        }

        private void ExploreTree_BeforeExpand(object sender, TreeViewEventArgs e)
        {
            Path.Text = e.Node.FullPath;
           
            AuthenticationForm curEx=new AuthenticationForm();
            using (SqlConnection curConnect =
                   AuthenticationForm.GetDBConnection(curEx.ServerPath.Text, curEx.BasePath.Text))
            {
                curEx.Dispose();
                try
                {
                    if (e.Node.Parent != null)
                    {
                        if (e.Node.Parent.IsExpanded == false)
                        {
                            e.Node.Parent.Expand();
                        }
                    }
                    
                    curConnect.Open();

                    //Заполнение узла "Факультеты"
                    //Заполнение узла "Курсы"
                    //Заполнение узлов номера курса
                    //Открытие узлов "Курс"
                   
                    
                    ExploreTree.SelectedNode = e.Node;    //Сюда управление доходит при двойном клике из ListView, но выделение не происходит
                }
                catch (SqlException ex)
                {
                    curConnect.Close();
                    MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error,
                       MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                }
           }
        }

        private void ExploreViewFill()
        {
            ExploreView.Items.Clear();
            foreach (TreeNode cur in ExploreTree.TopNode.Nodes)
            {
                ExploreView.Items.Add(cur.Text, 0);
            }
        }
        private void ExploreViewFill(TreeNode ex)
        {
            ExploreView.Items.Clear();
            foreach (TreeNode cur in ex.Nodes)
            {
                ExploreView.Items.Add(cur.Text, 0);
            }
        }
        private void Explorer_Load(object sender, EventArgs e)
        {
            ExploreViewFill();
            ProgramVersion.Text=" Версия:" + Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
        }

        private void ExploreTree_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
        {
            ExploreTree.SelectedNode = e.Node;
        }

        private void ExploreView_DoubleClick(object sender, EventArgs e)
        {
             Point clickPoint = ExploreView.PointToClient(Cursor.Position);
             ListViewItem item = ExploreView.GetItemAt(clickPoint.X, clickPoint.Y);
             if (item != null)
             {
                 TreeNode sendNode = FindNode(ExploreTree, item.Text);
                 TreeViewEventArgs cur = new TreeViewEventArgs(sendNode);
                 ExploreTree_BeforeExpand(ExploreTree, cur);
             }
        }


выделение соответствующего узла не происходит...

Это сообщение отредактировал(а) ДобренькийПапаша - 25.7.2009, 15:46


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

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


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

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


 




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


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

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