तो शायद आप प्रपत्र पर कहीं भी नियंत्रण के सभी प्राप्त करना चाहते हैं, न सिर्फ शीर्ष स्तर नियंत्रित करता है। ऐसी स्थिति में हमने इस आसान थोड़ा सहायक समारोह सभी चाइल्ड नियंत्रण प्राप्त करने के लिए सभी स्तरों पर, एक विशेष नियंत्रण के लिए की आवश्यकता होगी:
public static IEnumerable<Control> GetAllControls(Control control)
{
Stack<Control> stack = new Stack<Control>();
stack.Push(control);
while (stack.Any())
{
var next = stack.Pop();
yield return next;
foreach (Control child in next.Controls)
{
stack.Push(child);
}
}
}
(यह एक विस्तार विधि बनाने के लिए स्वतंत्र महसूस अगर आपको लगता है आप इसका उपयोग पर्याप्त)
फिर हम सिर्फ OfType
कि परिणाम पर एक विशेष प्रकार का नियंत्रण प्राप्त करने के लिए उपयोग कर सकते हैं:।
var panels = GetAllControls(this).OfType<Panel>();
मैं अपने शीर्षक संपादित किया है। कृपया देखें, "[प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?] (Http://meta.stackexchange.com/questions/19190/)", जहां आम सहमति है "नहीं, उन्हें नहीं करना चाहिए"। –
क्या आपने एक [foreach] (http://msdn.microsoft.com/en-us/library/ttw7t8t6 (v = vs.80) .aspx) लूप का उपयोग करने में देखा है? – Brian