मैंने पढ़ा है कि Load
ईवेंट विंडो हैंडल के निर्माण के बाद निकाल दिया जाना चाहिए, लेकिन से पहले विंडो वास्तव में दिखाई देगी। अधिकांश भाग के लिए, यह सच लगता है। हालांकि, मुझे पता चला है कि जब मैं WindowState
संपत्ति FormWindowState.Maximized
पर सेट करता हूं (या तो वीएस डिजाइनर के माध्यम से, या रचनात्मक रूप से कन्स्ट्रक्टर में), तो Load
ईवेंट फायरिंग से पहले विंडो दिखाई देगी। उदाहरण के लिए:विंडोस्टेट को अधिकतम करने के लिए विंडो को बहुत जल्दी दिखाई देने के कारण
using System;
using System.Windows.Forms;
namespace MyApplication
{
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
WindowState = FormWindowState.Maximized;
}
protected override void OnLoad(EventArgs e)
{
MessageBox.Show("OnLoad - notice that the window is already visible");
base.OnLoad(e);
}
}
}
यह बदले में एक बहुत झिलमिलाहट, जबकि उसके नियंत्रण (जो Form.Load
घटना के दौरान बाहर रखी हैं) आकार दिया जाता है, जबकि खिड़की से दिखाई देता है दिखाया गया प्रपत्र कारण बनता है। अगर मैंने राज्य को अधिकतम करने के लिए सेट नहीं किया है, तो खिड़की दिखाए जाने से पहले सभी आकार बदलना है (जो मुझे उम्मीद थी)।
मैं WindowState
को Load
ईवेंट के अंत तक सेट करने पर रोक सकता हूं, लेकिन यह अभी भी बहुत झटके का कारण बनता है क्योंकि खिड़की दिखाई देती है और फिर सभी नियंत्रण आकार बदलते हैं।
कोई विचार?
कि 'लोड घटना में MessageBox.Show' दिखाने के लिए प्रपत्र बाध्य करेगा। – LarsTech
'लोड' ईवेंट में नियंत्रण का आकार कुछ हद तक संदिग्ध है। आप नियंत्रण के लिए अंतर्निहित आकार बदलने वाले तंत्रों पर भरोसा क्यों नहीं करते हैं, जैसे कि 'डॉक' या' एंकर 'गुण या' टेबललेआउट पैनेल '? मैन्युअल रूप से बाद में विंडो का आकार बदलने पर आप नियंत्रणों का मैन्युअल रूप से आकार बदल देंगे? –
मुझे यह भी मिल रहा है। मैं उपयोगकर्ता सत्रों के बीच विंडोस्टेट को सहेज रहा हूं ताकि फ़ॉर्म का आकार बदला जा सके, आदि जिसे उपयोगकर्ता ने पहले किया था और जब मैंने विंडोस्टेट को अधिकतम करने के लिए सेट किया था तो मुझे बहुत झटका लग रहा है, आदि। क्या इसे ठीक करने का कोई समाधान है? –