TreeView в VC++

программирование программы C++ .net

Здравствуйте.

у меня на форме есть TreeView. Он заполняется из данных программы. после изменения данных я его перерисовываю. после этого все развернутые элементы сворачиваются.

можно ли сделать так, чтобы компонент сам запоминал развернутые элементы и после перерисовки восстанавливал свой внешний вид?

или только ручками?

Примечание:
не нашел ничего. пришлось писать обработку перерисовки, которая не добавляет а вставляет, проверая, есть ли элемент в дереве.


void Fill_Input_Tree()
{
Inputs_Tree->BeginUpdate();
// Inputs_Tree->Nodes->Clear();

for(int i=0;i!=Main_Variables->Inputs[0]->Elements;i++)
{
if(Inputs_Tree->Nodes->Count<=i || Inputs_Tree->Nodes[i]->Text!=Main_Variables->Inputs[0](i)->Name)
{
TreeNode^ Catedory=gcnew System::Windows::Forms::TreeNode(Main_Variables->Inputs[0](i)->Name);
Inputs_Tree->Nodes->Insert(i,Catedory);
}

for(int j=0;j!= Main_Variables->Inputs[0][i]->Elements;j++)
{
if(Inputs_Tree->Nodes[i]->Nodes->Count<=j || Inputs_Tree->Nodes[i]->Nodes[j]->Text!=Main_Variables->Inputs[0][i](j)->Name)
{
TreeNode^ Sensor=gcnew System::Windows::Forms::TreeNode(Main_Variables->Inputs[0][i](j)->Name);
Inputs_Tree->Nodes[i]->Nodes->Insert(j,Sensor);
}
}

for(int j=Main_Variables->Inputs[0][i]->Elements;j!=Inputs_Tree->Nodes[i]->Nodes->Count;j++) Inputs_Tree->Nodes[i]->Nodes->RemoveAt(j);
}

for(int i=Main_Variables->Inputs[0]->Elements;i!=Inputs_Tree->Nodes->Count;i++) Inputs_Tree->Nodes->RemoveAt(i);

Inputs_Tree->EndUpdate();
}

Примечание:
если кто знает как это делается автоматом, то скажите плиз.

просто есть один голос за автомат. а как?

Примечание:
пришлось делать руками.
причем немого сложнее чем в примере выше.
пока вроде не глючит :)
если кому нужен код то могу поделится
Ответы:
насколько я помню, ручками делалось
и новых методов вроде в мсдн'е не добавилось
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.treeview_methods.aspx
скорей всего придется перебирать все узлы и проверять на развернутость и где-то это сохранять


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.