2 Stimmen

Bestimmten Typ von Objekt aus List<T> holen

Ich habe eine Liste von Controls, die in einer List<Control> und ich möchte in der Lage sein, ihren Typ zu überprüfen. Da meine Liste nur Controls enthält, bringt mich typeof() nicht sehr weit, ich möchte in der Lage sein zu fragen, ob List<Control>[0] ist ein Kontrollkästchen, eine Textbox, ein Etikett usw.

Wie kann ich herausfinden, welche Art von Kontrolle ich in meiner Liste habe?

0voto

Evan Nagle Punkte 5043

Sie können GetType folgendermaßen verwenden:

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ConsoleApplication1
{
    class Program
    {
        static IList<Control> controls;

        static void Main(string[] args)
        {
            controls = new List<Control>();
            controls.Add(new TextBox());
            controls.Add(new CheckBox());

            foreach (var control in controls)
            {
                Console.WriteLine(control.GetType());
            }

            Console.ReadLine();
        }
    }
}

Sie können auch ein Wörterbuch einrichten, wenn Ihnen das lieber ist:

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ConsoleApplication1
{
    class Program
    {
        static IDictionary<string, Control> controls;

        static void Main(string[] args)
        {
            controls = new Dictionary<string, Control>();
            controls.Add("textbox thing", new TextBox());
            controls.Add("checkbox thing", new CheckBox());

            foreach (var control in controls)
            {
                Console.WriteLine(control.Key);
            }

            Console.ReadLine();
        }
    }
}

Oder Sie könnten das Steuerelement als Eigenschaft in Klasse A hinzufügen und die IList auf IList<ClassA> setzen:

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ConsoleApplication1
{
    class ClassA
    {
        public Control Control { get; set; }
        public string Group { get; set; }
        public string Subgroup { get; set; }
    }

    class Program
    {
        static IList<ClassA> controls;

        static void Main(string[] args)
        {
            controls = new List<ClassA>();
            controls.Add(new ClassA
            {
                Control = new TextBox(),
                Group = "Input",
                Subgroup = "Text"
            });

            controls.Add(new ClassA
            {
                Control = new CheckBox(),
                Group = "Input",
                Subgroup = "Checkbox"
            });

            foreach (var control in controls)
            {
                Console.WriteLine(control.Subgroup);
            }

            Console.ReadLine();
        }
    }
}

0voto

H. den Breejen Punkte 113

Var checkboxes = Controls.Where(c -> c ist CheckBox)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X