c# - सी#में डिफ़ॉल्ट अनुप्रयोग सेटिंग्स पढ़ना




.net winforms (5)

मेरे कस्टम ग्रिड नियंत्रण के लिए मेरे पास बहुत से एप्लिकेशन सेटिंग्स (उपयोगकर्ता स्कोप में) हैं I उनमें से ज्यादातर रंग सेटिंग हैं मेरे पास एक ऐसा फ़ॉर्म है जहां उपयोगकर्ता इन रंगों को अनुकूलित कर सकता है और मैं डिफ़ॉल्ट रंग सेटिंग्स पर वापस लौटने के लिए एक बटन जोड़ना चाहता हूं। मैं डिफ़ॉल्ट सेटिंग्स कैसे पढ़ सकता हूँ?

उदाहरण के लिए:

  1. मेरे पास एक उपयोगकर्ता सेटिंग है जिसे CellBackgroundColor में CellBackgroundColor नाम दिया गया है। सेटिंग
  2. डिज़ाइन के समय में मैंने CellBackgroundColor के मूल्य को CellBackgroundColor सेट किया था। CellBackgroundColor IDE का उपयोग करते हुए।
  3. उपयोगकर्ता CellBackgroundColor को अपने कार्यक्रम में CellBackgroundColor लिए CellBackgroundColor करें।
  4. मैं settings.Settings.Default.Save Properties.Settings.Default.Save() साथ सेटिंग्स को बचाने के लिए।
  5. उपयोगकर्ता Restore Default Colors बटन पर क्लिक करता है।

अब, Properties.Settings.Default.CellBackgroundColorColor.Black देता है। Color.Black । मैं वापस रंग कैसे Color.White ?


मैं वापस रंग कैसे जाऊँगा.वह?

दो तरीके आप कर सकते हैं:

  • उपयोगकर्ता द्वारा इसे बदलने से पहले सेटिंग की एक प्रति सहेजें।
  • उपयोगकर्ता को संशोधित सेटिंग्स कैश करें और इसे गुणों में सहेजें। एप्लिकेशन बंद करने से पहले सेटिंग

"विंडोज़ 2.0 फॉर्म प्रोग्रामिंग" पढ़ना, मैंने इन 2 उपयोगी विधियों पर ठोकर खाई जो इस संदर्भ में मदद का हो सकता है:

ApplicationSettingsBase.Reload

ApplicationSettingsBase.Reset

एमएसडीएन से:

पुनः लोड के साथ विरोधाभासों को पुनः लोड करें, जिसमें पूर्व में सहेजे गए एप्लिकेशन सेटिंग मानों के अंतिम सेट को लोड किया जाएगा, जबकि बाद में सहेजे गए डिफ़ॉल्ट मान लोड किए जाएंगे।

तो इसका उपयोग होगा:

Properties.Settings.Default.Reset()
Properties.Settings.Default.Reload()

मैं वास्तव में यह सुनिश्चित नहीं कर रहा हूँ कि यह आवश्यक है, एक नीरस तरीके से होना चाहिए, अन्यथा आशा है कि किसी को यह उपयोगी मिलेगा;

public static class SettingsPropertyCollectionExtensions
{
    public static T GetDefault<T>(this SettingsPropertyCollection me, string property)
    {
        string val_string = (string)Settings.Default.Properties[property].DefaultValue;

        return (T)Convert.ChangeType(val_string, typeof(T));
    }
}

उपयोग;

var setting = Settings.Default.Properties.GetDefault<double>("MySetting");

मैंने पाया कि ApplicationSettingsBase.Reset को कॉल करने से सेटिंग्स को उनके डिफ़ॉल्ट मानों पर रीसेट करने का असर होगा, लेकिन उन्हें एक ही समय में सहेजना होगा।

मैं चाहता था कि व्यवहार उन्हें मूलभूत मूल्यों में रीसेट करना था, लेकिन उन्हें बचाने के लिए नहीं था (ताकि उपयोगकर्ता डिफ़ॉल्ट पसंद नहीं कर सके, तब तक वे सहेजे गए, वे उन्हें वापस लौटा सकें)।

मैंने एक एक्सटेंशन विधि लिखा है जो मेरे उद्देश्यों के लिए उपयुक्त थी:

using System;
using System.Configuration;

namespace YourApplication.Extensions
{
    public static class ExtensionsApplicationSettingsBase
    {
        public static void LoadDefaults(this ApplicationSettingsBase that)
        {
            foreach (SettingsProperty settingsProperty in that.Properties)
            {
                that[settingsProperty.Name] =
                    Convert.ChangeType(settingsProperty.DefaultValue,
                                       settingsProperty.PropertyType);
            }
        }
    }
}

Properties.Settings.Default.Reset() सभी सेटिंग्स को उनके मूल मान में रीसेट करेगा।





application-settings