मेरे पास 4 पैनल हैं (एक दूसरे के ऊपर)। मैं सभी पैनलों को छिपाना चाहता हूं और क्लिक किए गए बटन के आधार पर उनमें से एक को दिखाना चाहता हूं। जब मैं एप्लिकेशन लॉन्च करता हूं और बटन पर क्लिक करता हूं, तो यह सभी पैनलों को सफलतापूर्वक छुपाता है लेकिन यह उस पैनल को नहीं दिखाता जो मैं चाहता हूं। मैं क्या गलत कर रहा हूं?

यहाँ मेरा कोड है:

namespace Detailing
{
public partial class MainForm : Form
{
    public void hidePanels()
    {
        welcomePanel.Width = 0;
        homePanel.Width = 0;
        historyPanel.Width = 0;
        savePanel.Width = 0;
    }
    public MainForm()
    {
        InitializeComponent();
        Load += new EventHandler(MainForm_Load);
    }
    private void MainForm_Load(object sender, EventArgs e)
    {
        hidePanels();
        welcomePanel.Width = 1306;
    }

    private void homeButton_Click(object sender, EventArgs e)
    {
        hidePanels();
        homePanel.Width = 1306;
    }
}
}

पी.एस. मैंने welcomePanel.Hide(); और homePanel.Show(); का उपयोग करने की कोशिश की और यह काम नहीं किया। इसके अलावा मैंने welcomePanel.Visible = false; और homePanel.Visible = true; का उपयोग करने की कोशिश की लेकिन दुख की बात है कि यह भी काम नहीं किया।

1
Tarek-Dev 12 मई 2017, 19:39
2
आपको सुनिश्चित होना चाहिए कि आपने किसी पैनल को दूसरे पैनल के अंदर शामिल नहीं किया है। दूसरे शब्दों में, कोई भी पैनल दूसरे पैनल का बच्चा नहीं होना चाहिए, अन्यथा माता-पिता को छुपाने से भी बच्चे छिप जाते हैं।
 – 
Steve
12 मई 2017, 19:41
नामों के आधार पर, मुझे लगता है कि ये वास्तव में नेस्टेड पैनलों के बजाय अलग-अलग रूप होने चाहिए।
 – 
PoweredByOrange
12 मई 2017, 19:42
2
चौड़ाई के साथ खिलवाड़ न करें लेकिन केवल अदृश्य बनाएं: yadayada.Visible=true/false: इसके अलावा: उन्हें एक सूची में रखें <पैनल> ताकि आप उन पर लूप कर सकें! बेशक यह काम करेगा। लेकिन, हाँ, उन्हें नेस्टेड नहीं किया जाना चाहिए। इससे बचने के लिए उन्हें या तो कोड में या कीबोर्ड के साथ (!!!!) लेकिन माउस के साथ नहीं (!!!!!!!)
 – 
TaW
12 मई 2017, 19:49
Visual Studio में Document Outline विंडो में अपने पैनल पदानुक्रम की जाँच करें
 – 
Fabio
12 मई 2017, 20:52
1
सुझावों और आपके नोट्स के लिए धन्यवाद। मैंने पहले दृश्यमान = सत्य/गलत का प्रयास किया लेकिन यह काम नहीं किया। समस्या यह थी कि पैनल नेस्टेड थे। अब यह ठीक काम करता है। शुक्रिया।
 – 
Tarek-Dev
14 मई 2017, 13:26

2 जवाब

सबसे बढ़िया उत्तर

एक पैनल एक नियंत्रण कंटेनर है। इसका मतलब यह है कि, अगर (डिजाइनर का उपयोग करके) आपने एक पैनल को दूसरे पैनल की सतह पर खींच लिया है, तो यह अंतर्निहित पैनल का बच्चा बन जाता है। जब आप अंतर्निहित पैनल को स्थानांतरित करने का प्रयास करते हैं तो आप इस तथ्य को आसानी से देख सकते हैं। सभी बच्चे एक साथ चलते हैं।

आप अपने पैनल को फॉर्म की अलग-अलग स्थिति में खींच सकते हैं और अन्य सभी पैनलों के लिए प्लेसहोल्डर के रूप में सिर्फ एक को रख सकते हैं। जब आप फॉर्म को लोड करते हैं या फॉर्म कंस्ट्रक्टर में आप कोड द्वारा अन्य पैनल को संदर्भ पैनल के उसी स्थान पर स्थानांतरित कर सकते हैं।

तो, यह मानते हुए कि स्वागत पैनल वह संदर्भ पैनल है जिसे आप लिख सकते हैं:

public partial class MainForm : Form
{
    public void hidePanels()
    {
        welcomePanel.Visible = false;
        homePanel.Visible = false;
        historyPanel.Visible = false;
        savePanel.Visible = false;
    }
    public MainForm()
    {
        InitializeComponent();
        Load += new EventHandler(MainForm_Load);
        homePanel.Location = welcomePanel.Location;
        historyPanel.Location = welcomePanel.Location;
        savePanel.Location = welcomePanel.Location;        
    }
    private void MainForm_Load(object sender, EventArgs e)
    {
        hidePanels();
        welcomePanel.Visible = true;
    }

    private void homeButton_Click(object sender, EventArgs e)
    {
        hidePanels();
        homePanel.Visible = true;
    }
    ..... and so on ...

}

एक अन्य तरीका TabControl का उपयोग करना और TabPage को आपकी आवश्यकता के अनुसार दिखाना/छिपाना है

2
Steve 12 मई 2017, 19:53
आपका तरीका काम कर गया। मुझे लगता है कि समस्या यह थी कि मैंने पहले पैनल के अंदर दूसरा पैनल जोड़ा। आपके विस्तृत उत्तर के लिए बहुत-बहुत धन्यवाद, यह बहुत मददगार था।
 – 
Tarek-Dev
14 मई 2017, 13:21

अपने कोड को छोटा करने के लिए सीधे अपने पैनल को उनके गुणों पर गलत पर सेट करें इसलिए और केवल वेलकमपैनल को सही पर सेट करें। पैनल की यह संपत्ति सिर्फ विजिबल को ढूंढती है और फिर इसे गलत या सही पर सेट करती है

नाम स्थान विवरण {सार्वजनिक आंशिक वर्ग मेनफॉर्म: फॉर्म {

public MainForm()
{
    InitializeComponent();
    Load += new EventHandler(MainForm_Load);
}
private void homeButton_Click(object sender, EventArgs e)
{
    homePanel.Visible = true;
}

//और इसी तरह......

} }

0
christian martin cabucos 11 फरवरी 2019, 08:12