Jag har problem med att convertera ifron object till int. har du testat med Convert.ToInt32(val)? Tack men jag lyckas med att klumpa till det i alla fall. wwwoooooooooooo... STOP!!! ;-) Möjligen att du har rätt, men jag hadde inga större problem med att skriva/läsa ifrån registret i VB 6.0 Exakt vad är det du försöker åstadkomma. Lyckas inte riktigt klura ut. Vill du flytta på en nod eller vad? Har jag varit så otydlig??? Ok, du vill alltså spara undan typ "Skåne" och sen när du läser in den igen så vill du att skåne skall vara expanderad? Jag vet inte varför jag vill ha det i registret, det har bara blivet så. GetLänNamn var bara ett exempel... Ännu märkvärdigare.Problem med att spara treeView setting i registret.
<code>
RegistryKey pRegKey = Registry.LocalMachine;
pRegKey = pRegKey.OpenSubKey("Software\\IdrottsPortalen");
if(pRegKey!=null)
{
Object val = pRegKey.GetValue("Län");
//MessageBox.Show("Registrerade nycklar:"+ val);
treeView1.SelectedNode.Parent.Index = val;
val = pRegKey.GetValue("Kommun");
treeView1.SelectedNode.Index = val;
//MessageBox.Show("Registrerade nycklar:"+ val);
}
</code>
Felet jag får är:
<code>
E:\IdrottsPortalen\IdrottsPortalen\Län_Kommun.cs(250): Cannot implicitly convert type 'object' to 'int'
</code>
Jag vet att jag skall använda mig av ConvertTo men jag får inte ihop det.Sv: Problem med att spara treeView setting i registret.
du borde kanske oxå kolla att dina val inte är null (vilket dom ju är om nyckeln saknas)Sv: Problem med att spara treeView setting i registret.
<code>
Object val = pRegKey.GetValue("Län");
if(val !=null)
{
treeView1.SelectedNode.Parent.Index = Convert.ToInt32(val);
val = pRegKey.GetValue("Kommun");
val=Convert.ToInt32(val);
treeView1.SelectedNode.Index = Convert.ToInt32(val);
}
</code>
Error:
<code>
E:\IdrottsPortalen\IdrottsPortalen\Län_Kommun.cs(252): Property or indexer 'System.Windows.Forms.TreeNode.Index' cannot be assigned to -- it is read only
</code>
Jag gör tydligen någonting tokigt iallafall, vad tror du?Sv: Problem med att spara treeView setting i registret.
Jag rekomenderar dig från att inte spara skit i registret, Registret är typ MS största misstag och folk missbrukar det som bara den. Undvik gärna att spara saker i registret _Eller_ var väldigt noga med att se till så det du lägger in verkligen raders från registret. Egentligen borde du spara ner dina inställningar i en xmlfil. För att underlätta det för dig kan du använda dig av MS configurationsblock där du har möjlighet att spara config data för din application i app.config eller i egna skapade XMLfiler.
Mvh JohanSv: Problem med att spara treeView setting i registret.
Xml-fil har jag aldrig jobbat med så jag skall väll inte säga någonting negativt, men...Sv: Problem med att spara treeView setting i registret.
Sv: Problem med att spara treeView setting i registret.
Jag fick ju suverän hjälp av dig när det gäller treeView:n. Nu vill jag spara treeView:ns inställningar, alltså ha noden för län och child noden för kommun expanderad.
Jag kanske är helt ute när det gäller SelectedNode.Index men visst borde man väll kunna göra det??Sv: Problem med att spara treeView setting i registret.
Grejen är ju det att du bara sparar undan nodens position i förhållande till sin Parent...
Nåja, men jag tror att detta kan vara vad du vill ha. Men det kommer ju inte att fungera om antalet noder av nån anledning skulle ändra på sig eller om noderna sorteras i en annan ordning...
<code>
Object val = pRegKey.GetValue("Län");
if(val !=null)
{
int index=Convert.ToInt32(val);
treeView1.Nodes[index].Expand();
val = pRegKey.GetValue("Kommun");
int kommunindex=Convert.ToInt32(val);
treeView1.SelectedNode=treeView1.Nodes[index].Nodes[kommunindex];
}
</code>
Ett alternativ hade ju kunnat vara att spara namnet på noden istället
<code>
string lan=GetLänNamn(); //hämta lännamnet
for(int i=0;i<treeView1.Nodes.Count;i++)
{
if(treeView1.Nodes[i].Text==lan)
{
treeView1.Nodes[i].Expand();
}
}
</code>
Sen borde du nog kolla lite på att spara inställningarna någon annanstans antingen i en ini-fil eller en settingsfil av xml-typ. Kolla på xmlserialization. Väldig enkelt att jobba med där du bara behöver göra en klass för dina inställningar som du sparar ner i en xml-struktur och sen kan läsa upp igen. väldigt smidigt
Kolla här t.ex.: http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=236 http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=236
eller
http://www.codeproject.com/csharp/xmlserialize.asp
****
EDIT: ändrade lite... hade sett lite fel innanSv: Problem med att spara treeView setting i registret.
Jag fick problem med dik kod.
Först så försökte jag med den översta, den med indexnummer.
Någonting blir galet med den sista raden, min application krachar.
Jag har det i en MDI-applikation och han pekar på
<code>
{
Application.Run(new Form1());
}
</code>
Jag byggde om min kod, och försökte att anpasa den efter ditt andra förslag.
Inga problem med att spara men var får du string lan=GetLänNamn(); //hämta lännamnet ifrån?
Jag har försök med allahanda ting inkl behålla min ursprungliga val(som har värdet i sig). Har försökt med convertera till text, och utan convertera till text.
Jag får inga felmedelande men treeView öppnar inte upp sig.
<code>
string lan=pRegKey.GetValue("Län").ToString();
for(int i=0;i<treeView1.Nodes.Count;i++)
{
if(treeView1.Nodes[i].Text==lan.ToString())
{
MessageBox.Show(lan.ToString());
label1.Text= lan.ToString();
treeView1.Nodes[i].Expand();
}
}
</code>
Här är det märkvärdigt. I MessageBoxen så får jag fram länet, men inte i labelen.
Kan det måntro ha någonting att göra med att treeViewn inte expandera?Sv: Problem med att spara treeView setting i registret.
typ för att markera att du hämtade namnet på länet.
Väldigt skumt att labeln inte får nåt värde.
Nåja, jag kan försöka knåpa ihop ett lite bättre exempel mot kvällen. Men jag tycker att din kod borde fungera...Sv: Problem med att spara treeView setting i registret.
<code>
this.label1.Text= lan.ToString();
this.Text= lan.ToString();
this.treeView1.Nodes[i].Expand();
</code>
Gör jag så här, så får formuläret rätt text, men inte labelen och treeView:n är som en gammal tjurig käring, bryr sig inte om någonting.
Inga felmedelanden dock.