无法动态地向面板添加用户控件

时间:2012-09-18 11:00:58

标签: c# winforms user-controls panel dynamically-generated

我有一个桌面应用程序的c#代码。它通过获取数据库函数返回的值,动态地将控件添加到Panel1

private void loadData()
        {
            string[] names = dops.get_lstMed(textBox2.Text); //fetching values from database
            MediRow[] mr = new MediRow[names.Length]; //User control array
            panel1.Controls.Clear();
            for (int i = 0; i < names.Length; i++)
            {
                mr[i] = new MediRow();
                mr[i].MedName = names[i];
                mr[i].AvailQty = dops.get_Med_qty(names[i]).ToString();
                mr[i].Quantity = "0";
                panel1.Controls.Add(mr[i]);
            }

        }

当我调试它时,数据库函数dops.get_lstMed()返回的值是正确的,甚至循环工作正常。但问题是面板中只添加了一个控件,即使数据库有多行。请告诉我代码有什么问题吗?

2 个答案:

答案 0 :(得分:4)

@ChrisSinclair可能是对的:尝试设置填充控件属性的mr[i].Dock = DockStyle.Top;

答案 1 :(得分:1)

也许这段代码有效,但似乎无效,因为您在同一位置创建它们,并且您必须更改要添加的控件的位置属性。

至少在第一眼看到我能看到的解决方案。