首页 > 解决方案 > 如何访问 C# 面板中动态添加的用户控件的控件?

问题描述

我有一个面板,它有多个动态添加的用户控件(都一样),我需要查看是否选中了一个复选框以及每个控件中的 label.text 是什么。不确定如何获得这些值?

这是将用户控件添加到面板的位置

private void Employee_Add_Load(object sender, EventArgs e)
    {
        List<string> VehicleTypes = DAL.LicenseDAL.GetAllVehicleTypes();

        foreach (string Vehicle in VehicleTypes)
        {
            User_Controls.Vehicle_Bar VTB = new Vehicle_Bar(Vehicle);
            pnlVehicleChecks.Controls.Add(VTB);
        }
    }

这是用户控件(实际上只是一个标签和复选框)

public partial class Vehicle_Bar : UserControl
{
    public string Vehicle = "";

    public Vehicle_Bar(string vehicle)
    {
        Vehicle = vehicle;
        InitializeComponent();
    }

    private void Vehicle_Bar_Load(object sender, EventArgs e)
    {
        lblType.Text = Vehicle;
    }
}

所有这些复选框都适用于员工的车辆执照,具体取决于选中的复选框取决于他们将被允许驾驶的车辆

标签: c#winformscontrols

解决方案


您可以在 UserControl 中处理复选框数据的检索并将其存储在可公开访问的数据对象中

public class VehicleInfo
{
    public bool allowdrive {get; set; }
    public string vehicle {get; set; }
}

public partial class Vehicle_Bar : UserControl
{   
    public VehicleInfo vehicleInfo;

    public Vehicle_Bar(string vehicle)
    {
        vehicleInfo = new VehicleInfo(){
            vehicle = vehicle,
            allowdrive = false
        };

        InitializeComponent();
    }

    private void Vehicle_Bar_Load(object sender, EventArgs e)
    {
        lblType.Text = vehicleInfo.vehicle;
    }

    //Handle checkbox click event to set the value of "allowdrive"
}

字符串和复选框的组合数据存储在对象 vehicleInfo 中,可以使用 UserControl Vehicle_Bar 的实例访问该对象

例子 :

Console.WriteLine(VTB.vehicleInfo.allowdrive);

推荐阅读