Здравствуйте.
у меня на форме есть 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();
}
Примечание:
если кто знает как это делается автоматом, то скажите плиз.
просто есть один голос за автомат. а как?
Примечание:
пришлось делать руками.
причем немого сложнее чем в примере выше.
пока вроде не глючит :)
если кому нужен код то могу поделится
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.