2011-05-03 14 views
16

Aşağıdaki kod var:C# nasıl değerlerini değiştirerek Properties.Settings.Default.Properties döngü

foreach (SettingsProperty currentProperty in Properties.Settings.Default.Properties) 
{ 
    if (Double.TryParse(GenerateValue()), out result)) 
    { 
     currentProperty.DefaultValue = result.ToString(); 

     Properties.Settings.Default.Save(); 
    } 
} 

Bir MySQL veritabanından yeni değeri alır. Ben iyi çalışıyor gibi görünüyor yeni değeri göstermek için bir MessageBox.Show eklemek ama aslında kaydedin etmezse. Bunun bir değişkene değer atarım çünkü bunu yapmanın bir yolu olduğunu varsayalım.

Properties.Settings.Default.IndexOf(currentProperty.name).DefaultValue = result 

cevap

21

Bu işe yarayabilecek:

foreach (SettingsProperty currentProperty in Properties.Settings.Default.Properties) 
{ 
    Properties.Settings.Default[currentProperty.Name] = result.ToString(); 
    Properties.Settings.Default.Save(); 
} 

özellikleri kaydedilecek amacıyla kapsamını 'Kullanıcı' olması gerektiğini unutmayın.

+0

Bunu yapmanın bir yolu olması gerektiğini biliyordum. Yardımın için çok teşekkürler. Kullanıcıya zaten ayarlanmış olan herşeyi yaptım. – Brandon

+0

[Alex Azabut] Ayarın kapsamını nasıl bulabilirim? – gg89

+0

Kullanabileceğimden şüpheleniyorum, user.ReadOnly kullanıcı alanı olarak, değil mi? – gg89

2

Ben senin sonuca ile kabul eder. Yapmak zorunda olduğun şey, mülkü dize değerinden almak.

Properties.Settings.Default[string value] = 

    foreach (SettingsProperty currentProperty in Properties.Settings.Default.Properties) 
    {  
    if (Double.TryParse(GenerateValue()), out result)) 
     {   

Properties.Settings.Default[ currentProperty.Name ] = result.ToString(); 
      Properties.Settings.Default.Save(); 
     } 
    } 

Yukarıdakiler gerçekten istediğiniz şeydir.

+0

Teşekkür ederim. – Brandon

+0

Cevabım aslında derlenecek. * İpucu ** İpucu ** İpucu * –