मेरा दूसरा विकल्प एप्लिकेशन सेटिंग्स के चारों ओर अधिक कस्टम कोड लिखना है और इसे फॉर्मलोड और फॉर्मक्लोज़ पर निष्पादित करना है। यह डेटा बाइंडिंग का उपयोग नहीं करता है।
कमियां:
- अधिक कोड लिखने के लिए।
- बहुत विचित्र रूप से। फ़ॉर्मलोड पर गुण सेट करने का ऑर्डर भ्रमित है। उदाहरण के लिए, आपको यह सुनिश्चित करना होगा कि आपने स्प्लिटर दूरी सेट करने से पहले विंडो आकार सेट कर दिया है।
अभी, यह मेरा पसंदीदा समाधान है, लेकिन ऐसा लगता है कि यह बहुत अधिक काम है। काम को कम करने के लिए, मैंने एक विंडोसेटिंग क्लास बनाई है जो विंडो स्थान, आकार, स्थिति और किसी भी स्प्लिटर स्थिति को एक ही एप्लिकेशन सेटिंग में क्रमबद्ध करता है।फिर मैं अपने आवेदन में प्रत्येक फॉर्म के लिए उस प्रकार की सेटिंग बना सकता हूं, बंद पर सहेज सकता हूं, और लोड पर पुनर्स्थापित कर सकता हूं।
मैंने the source code पोस्ट किया, जिसमें विंडोसेटिंग क्लास और कुछ फॉर्म इसका उपयोग करते हैं। इसे किसी प्रोजेक्ट में जोड़ने पर निर्देश WindowSettings.cs फ़ाइल में शामिल हैं। सबसे कठिन हिस्सा यह पता लगा रहा था कि कस्टम प्रकार के साथ एप्लिकेशन सेटिंग कैसे जोड़ना है। आप ब्राउज़ ड्रॉप ... प्रकार ड्रॉपडाउन से चुनें, और फिर मैन्युअल रूप से नामस्थान और कक्षा का नाम दर्ज करें। आपकी परियोजना के प्रकार सूची में दिखाई नहीं देते हैं।
अद्यतन: मैंने बॉयलरप्लेट कोड को सरल बनाने के लिए कुछ स्थिर तरीकों को जोड़ा जो आप प्रत्येक रूप में जोड़ते हैं। एक बार जब आप अपनी प्रोजेक्ट में विंडोसेटिंग क्लास जोड़ने और एप्लिकेशन सेटिंग बनाने के निर्देशों का पालन कर लेते हैं, तो यहां कोड का एक उदाहरण दिया गया है जिसे प्रत्येक फॉर्म में जोड़ा जाना है, जिसकी स्थिति आप रिकॉर्ड करना और पुनर्स्थापित करना चाहते हैं।
private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
Settings.Default.CustomWindowSettings = WindowSettings.Record(
Settings.Default.CustomWindowSettings,
this,
splitContainer1);
}
private void MyForm_Load(object sender, EventArgs e)
{
WindowSettings.Restore(
Settings.Default.CustomWindowSettings,
this,
splitContainer1);
}
स्रोत
2008-09-19 22:01:33
ग्रेट नमूना कोड! –
दुर्भाग्यवश, डोनकिर्बी परियोजना का लाइसेंस जिसके तहत नमूना बाध्य है, कोड के सरल मुक्त उपयोग के लिए अनुमति नहीं दे सकता है। इसे फिर से प्रकाशित करने पर विचार करें। –
अब मैं एमआईटी लाइसेंस में बदल गया हूं; मेरा मतलब कोड के उपयोग को प्रतिबंधित करने का नहीं था। बेशक, एट्रिब्यूशन की सराहना की जाती है। यहां पोस्ट करने के लिए कोड थोड़ा लंबा है। –