本人想在窗体加载后通过获取到的List添加几个checkbox,第一个checkbox是写死的,之后的位置与这个写死的checkbox相关。但是动态生成的这几个一直不显示,但是设断点看到数据时抓到了的,checkbox对象也正确的生成了
List<APP> M = new List<APP>();
List<CheckBox> cbNew = new List<CheckBox>();
private void Cb()
{
M = GetAPPList();
cbFirst.Text =M[0].APPNAME ;//cbfirst是第一个写checkbox,写死的
cbFirst.Tag = M0].APPID;
for (int i = 1; i < M.Count; i++)
{
CheckBox cbAdd = new CheckBox();
cbAdd.Text = sysMenu[i].APPNAME.ToString();
cbAdd.Tag = sysMenu[i].APPID;
cbAdd.Width = 84;
cbAdd.Height = 16;
cbAdd.Visible = true;
int left = 90 + 84 * i;
cbAdd.Location = new Point(left, 51);
cbNew.Add(cbAdd);
}
for (int j = 1; j < cbNew.Count; j++)
{
this.Controls.Add(cbNew[j]);
}
}
求帮助为什么会不显示。
解决方案
15
你知道这个this代表什么?
15
全动态添加控件
private void 设置选项()
{
string[] 复选文 = { "声音提示", "载入游戏", "智能列示", "智能行示" };
CheckBox[] 复选组 = Array.ConvertAll(复选文, 控件 => new CheckBox());
int 序号 = 0;
foreach (CheckBox 控件 in 复选组)
{
控件.Name = 控件.Text = 复选文[序号++];
控件.Checked = true;
控件.AutoSize = true;
//控件.Parent = this;
this.Controls.Add(控件);
}
Button 刷钮 = (Button)this.Controls["刷新"];
CheckBox 声音 = (CheckBox)this.Controls[复选文[0]],
载入 = (CheckBox)this.Controls[复选文[1]],
智列示 = (CheckBox)this.Controls[复选文[2]],
智行示 = (CheckBox)this.Controls[复选文[3]];
声音.Location = new Point(刷钮.Location.X + 刷钮.Width + 4, 刷钮.Location.Y);
载入.Location = new Point(声音.Location.X, 声音.Location.Y + 声音.Height);
智列示.Location = new Point(声音.Location.X + 声音.Width + 4, 声音.Location.Y);
智行示.Location = new Point(智列示.Location.X, 智列示.Location.Y + 智列示.Height);
}
140
你先在窗口上拖一个容器上去,在容器上动态生成。