簡體   English   中英

如何獲取命名空間中的所有控件?

[英]How can I get all the controls in a namespace?

如何獲取命名空間中的所有控件? 例如,我想獲取System.Windows.Forms中的控件:TextBox,ComboBox等。

命名空間中控件的概念有點不清楚。 您可以使用反射來獲取給定命名空間中從特定基類型派生的程序集中的類。 例如:

class Program
{
    static void Main()
    {
        var controlType = typeof(Control);
        var controls = controlType
            .Assembly
            .GetTypes()
            .Where(t => controlType.IsAssignableFrom(t) && 
                        t.Namespace == "System.Windows.Forms"
            );
        foreach (var control in controls)
        {
            Console.WriteLine(control);
        }
    }
}

這將返回指定命名空間中的所有類:

string @namespace = "System.Windows.Forms";

var items = (from t in Assembly.Load("System.Windows.Forms").GetTypes()
        where t.IsClass && t.Namespace == @namespace
        && t.IsAssignableFrom(typeof(Control))
        select t).ToList();

您的表單對象有一個Controls成員,其類型為ControlCollection 它本質上是所有控件的列表(帶有一些其他接口)。

編輯:根據您的評論,您需要將控件強制轉換為文本框。 首先,您必須將其識別為控件。

foreach (var control in controls)
{
    if(control is TextBox)
    {
        (control as TextBox).Text = "Or whatever you need to do";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM