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

时间:2014-10-13 05:45:54

标签: c# .net excel winforms excel-addins

我正在使用excel加载项项目c#。

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

并且也想选中该复选框。

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

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

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

使用

调用弹出窗体
 new FilterDataForm().ShowDialog(mylist);

弹出窗体.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);
            }
        }
  

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

选中此屏幕截图我将在弹出Employee names上查找这样的输出,将使用LIST enter image description here

传递

1 个答案:

答案 0 :(得分:4)

您已经有一个包含员工姓名的列表?然后只需这样做

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);
    }
}