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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновить текущий элемент TreeView при редактирован 
:(
    Опции темы
NilovSerge
Дата 5.11.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1)У меня элементы TreeView редактируется в отдельном окне. Отредактировав или создав новый элемент
я хочу свои изменения отобразить в TreeView. Уменя работает вставка нового элемента но при редактировании получаю ошибку:
"No parameterless constructor defined for this object"
Если я не ошибаюсь то редатирование элемента надо так: Клонировать редактируемый обьект запомнить его индекс 
удалить и внеся изменения пересоздать заново
Делаю так:

      if (!isInsert)
      { // edit existing dep
        DepsTreeNode CopyObj = (DepsTreeNode)CurrentNode.Clone(); //Здесь ошибка
        CopyObj._Dep._Name = tbName.Text;
        int CopyObjIndex = DepstreeView.SelectedNode.Index;
        CurrentNode.Remove();
        CurrentNode.Nodes.Insert(CopyObjIndex, CopyObj);
        CurrentNode.Expand();
      }
      else
      {// add new Эта часть работает
        Deps NewDep = new Deps( /*int pDepID*/ this.DepId, /*string pName*/ tbName.Text, /*int pParentDepId*/ this.ParentDepId);
        CurrentNode.Nodes.Add(new DepsTreeNode(NewDep));
        DepsTreeNode NewNode = (DepsTreeNode)CurrentNode.Nodes[CurrentNode.Nodes.Count - 1];
        CurrentNode.Expand(); 
      }


DepsTreeNode это класс наследуемый от TreeNode.
Я просмотрел в MSDN Clone() - у него нет никаких параметров. В чем может быть причина ?



2) двойным кликом на элементе TreeView я загружаю все строки в DataGridView. При этом если убрать фокус с TreeView, то текущий 
элемент не подсвечивается. Как можно выделить текущий элемент TreeView чтоб он был всегда выделен(Возможно картинкой)?




      Заранее спасибо
PM MAIL   Вверх
1stain
Дата 5.11.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



Цитата(NilovSerge @  5.11.2007,  18:28 Найти цитируемый пост)
Клонировать редактируемый обьект запомнить его индекс удалить и внеся изменения пересоздать заново

зачем столько сложностей?
по-моему проще сделать у своего тринода паблик свойства и отразить их в юзерконтроле, связанном с этим типом нода, оттуда же и редактировать.


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
NilovSerge
Дата 6.11.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



да действительно проще:
Делаю
        treeView.SelectedNode.Text = "NewText";
и работает...



А насчет 2) и выделении активного TreeNode при фокусироании другого контрола на форме идей нет ?
PM MAIL   Вверх
1stain
Дата 6.11.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



щас тебе модераторы все объяснят  smile 
пока никого нет, лови код
Код

        private void treeView1_Leave(object sender, EventArgs e)
        {
            treeView1.SelectedNode.BackColor = SystemColors.Highlight;
            treeView1.SelectedNode.ForeColor = SystemColors.HighlightText;
        }

        private void treeView1_Enter(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode == null)
                return;
            treeView1.SelectedNode.BackColor = treeView1.BackColor;
            treeView1.SelectedNode.ForeColor = treeView1.ForeColor;
        }

подпишись в TreeView на соответствующие события

Это сообщение отредактировал(а) 1stain - 6.11.2007, 14:16


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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