如何通过在列表 C# 中传递复选框名称在 Winform 上创建动态复选框?

Neo*_*Neo 2 .net c# excel excel-addins winforms

我正在处理 excel 插件项目 c#。

想要创建带有在 List 中传递的名称的复选框列表,如何使用该传递命名创建它?

并希望也采用该复选框选定的值。

目前我有一个按钮,LoadEmployee当我点击所有 EmployeeNames 直接从 Sql 表加载到 Excel 表中时

现在我想做的是,当我点击LoadEmployee它时,会打开一个包含所有员工姓名的弹出窗口,每个员工姓名都有一个复选框,我选择哪个复选框只填充员工姓名而不填充其他。

在@Vajura 给出的答案的帮助下,我尝试过

调用弹出窗体使用

 new FilterDataForm().ShowDialog(mylist);
Run Code Online (Sandbox Code Playgroud)

在弹出表单 .cs 上

internal void ShowDialog(MyModel.ListEmployee> mylist)
    {
        GenerateFilterList(mylist);            
    }

 private void GenerateFilterList(List<ListEmployee> mylist)
        {
            System.Windows.Forms.CheckBox box;
            for (int i = 0; i < mylist.Count; i++)
            {
                box = new System.Windows.Forms.CheckBox();
                box.Tag = mylist[i];
                box.Text = mylisti].ToString();
                box.AutoSize = true;
                box.Location = new Point(10, i * 50); //vertical
                //box.Location = new Point(i * 50, 10); //horizontal
                this.Controls.Add(box);
            }
        }
Run Code Online (Sandbox Code Playgroud)

但也没有得到任何弹出窗口:(

检查这个屏幕截图,我正在寻找这样的弹出窗口的输出Employee names将显示它是通过使用LIST在此处输入图片说明

Vaj*_*ura 6

您已经有了一份员工姓名列表?然后简单地做这个

private void Form1_Load(object sender, EventArgs e)
{
    this.Size = new Size(200, 200);
    List<string> yourList = new List<string>();
    yourList.Add("A");
    yourList.Add("B");
    yourList.Add("C");
    yourList.Add("D");
    yourList.Add("E");
    yourList.Add("F");
    CheckBox box;
    int innitialOffset = 20;
    int xDistance = 80;
    int yDistance = 50;

    for (int i = 0; i < yourList.Count; i++)
    {
        box = new CheckBox();
        box.Tag = yourList[i];
        box.Text = yourList[i].ToString();
        box.AutoSize = true;
        box.Location = new Point(innitialOffset + i % 2 * xDistance, innitialOffset + i / 2 * yDistance); 

        this.Controls.Add(box);
    }
}
Run Code Online (Sandbox Code Playgroud)