2009-07-23 44 views
8

Tôi đã viết một lớp học mà nên cho phép tôi để dễ dàng đọc và ghi giá trị trong cài đặt ứng dụng:Làm cách nào để thay đổi cài đặt ứng dụng (Cài đặt) trong khi ứng dụng đang mở?

public static class SettingsManager 
    { 
     public static string ComplexValidationsString 
     { 
      get { return (string)Properties.Settings.Default["ComplexValidations"]; } 
      set 
      { 
       Properties.Settings.Default["ComplexValidations"] = value; 
       Properties.Settings.Default.Save(); 
      } 
     } 

vấn đề là giá trị là không thực sự lưu, tôi có nghĩa là nó không bị thay đổi khi tôi thoát khỏi ứng dụng và chạy lại. Tôi có thể làm gì để đảm bảo rằng giá trị đã lưu vẫn còn giữa đóng và mở lại?

+1

Điều đó cần được lưu, tôi không thấy bất kỳ vấn đề nào với nó trong mắt tôi. – ThePower

Trả lời

5

Bạn nên kiểm tra

Properties.Settings.Default.Properties["ComplexValidations"].IsReadOnly 

Nó có lẽ là đúng, đây là những gì Roland nghĩa với "Ứng dụng Phạm vi". Lưu sẽ không âm thầm. Hãy xem Dự án | Thuộc tính | Cài đặt, cột thứ 3.

11

phạm vi cài đặt phải là người dùng không áp dụng

+0

ý của bạn là gì? – agnieszka

+0

Thêm trước khi cài đặt của bạn trong Settings.designer.cs [global :: System.Configuration.UserScopedSettingAttribute()] hoặc chỉ cần thay đổi phạm vi trong settings1.settings – Woland

2

Bạn có chắc chắn rằng nó không lưu thay đổi? Tệp [ProgramName] .exe.config trong thư mục bin sẽ không được cập nhật. Tệp thường được sử dụng thường được đặt trong C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config. Tôi biết khi tôi thử loại điều này, tôi đã mất một lúc để nhận ra đây là tập tin đã được cập nhật.

+0

bất kỳ tệp nào đang cập nhật, kết quả là tôi muốn xem giá trị của ComplexValidationsString được đặt thành giá trị được đặt trong lần trước khi ứng dụng được mở. – agnieszka

0

tôi chỉ thử nghiệm cài đặt User và nó được tồn nếu bạn chạy ứng dụng Console này hai lần:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(Settings1.Default.Setting); 
     Console.ReadLine(); 
     Settings1.Default.Setting = "A value different from app.config's"; 
     Settings1.Default.Save(); 
    } 
} 

Chỉ cần cố gắng nó ra. Nó sẽ không mất một phút.

Các vấn đề liên quan