winfrom动态创建CheckBox

zenjj777 2010-02-06 11:44:18
如图

我想在winfrom动态的创建CheckBox(选择和全选之类的就不用每个控件都去写代码),那位前辈能提供相关的代码呢?谢谢!
...全文
249 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianliang1 2010-02-06
  • 打赏
  • 举报
回复
过客!
wuyq11 2010-02-06
  • 打赏
  • 举报
回复
checkboxlist
for (int i = 0; i < 4; i++)
{
CheckBox chk= new CheckBox();
chk.Top = 10;
chk.Text = i.ToString();
chk.Left = i * 30;
chk.AutoSize = true;
chk.CheckedChanged += new EventHandler(chk_CheckedChanged);
Controls.Add(chk);
}
void chk_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk=sender as CheckBox ;

}
feile922 2010-02-06
  • 打赏
  • 举报
回复
用wpf吧
lzsh0622 2010-02-06
  • 打赏
  • 举报
回复

private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i < 33; i++)
{
CheckBox chk = new CheckBox();
if (i == 31) chk.Text = "全选";
else if (i == 32) chk.Text = "不选";
else chk.Text = (i + 1).ToString().PadLeft(2, '0');
chk.Location = new Point(i % 12 * 50, i / 12 * 30);
chk.Width = 50;
chk.Name = "checkBox" + i;
chk.CheckedChanged += new EventHandler(checkBox_CheckedChanged);
this.Controls.Add(chk);
}
}

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
switch ((sender as CheckBox).Text)
{
case "全选": // 可以实现全选和不选的功能 不选那一个CheckBox可以去掉
{
for (int i = 0; i < 31; i++)
{
(this.Controls["checkBox" + i] as CheckBox).Checked = (sender as CheckBox).Checked;
}
break;
}
default: break; // 其它情况在本行处理
}
}

itliyi 2010-02-06
  • 打赏
  • 举报
回复
ls有答案了。。。
足球中国 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 snowdust 的回复:]
使用CheckedListBox比较好,
C# codethis.checkedListBox1.ColumnWidth=40;this.checkedListBox1.MultiColumn=true;for (int i=0; i<100; i++)
{this.checkedListBox1.Items.Add(i.ToString().PadLeft(2));
}
如果一定要使用CheckBox,这样:
C# codefor (int i=0; i<30; i++)
{
CheckBox cb=new CheckBox();
cb.Text= i.ToString().PadLeft(2);
cb.Name="myCheckBox"+ i.ToString().PadLeft(2);
cb.Left= ...;//这里调整位置 cb.Top= ...;this.Controls.Add(cb);
}
[/Quote]窗体加一个panel
Snowdust 2010-02-06
  • 打赏
  • 举报
回复
使用CheckedListBox比较好,
this.checkedListBox1.ColumnWidth = 40;
this.checkedListBox1.MultiColumn = true;
for (int i = 0; i < 100; i++)
{
this.checkedListBox1.Items.Add(i.ToString().PadLeft(2));
}

如果一定要使用CheckBox,这样:
for (int i = 0; i < 30; i++)
{
CheckBox cb = new CheckBox();
cb.Text = i.ToString().PadLeft(2);
cb.Name = "myCheckBox" + i.ToString().PadLeft(2);
cb.Left = ...; //这里调整位置
cb.Top = ...;
this.Controls.Add(cb);
}
路人乙e 2010-02-06
  • 打赏
  • 举报
回复
窗体加一个panel
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
CheckBox box = new CheckBox();
box.Location = new Point(i * 40, 10);
box.Width = 30;
box.Text = i.ToString();
panel1.Controls.Add(box);
}
CheckBox chk = new CheckBox();
chk.Location = new Point(20, 60);
chk.Width = 50;
chk.Text = "全选";
chk.CheckedChanged += new EventHandler(chk_CheckedChanged);
this.Controls.Add(chk);
}

void chk_CheckedChanged(object sender, EventArgs e)
{
foreach (Control ctrl in panel1.Controls)
{
if (ctrl is CheckBox) ((CheckBox)ctrl).Checked = ((CheckBox)sender).Checked;
}
}
lzsh0622 2010-02-06
  • 打赏
  • 举报
回复
动态创建CheckBox

private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 33; i++)
{
CheckBox chk = new CheckBox();
if (i == 31) chk.Text = "全选";
else if (i == 32) chk.Text = "不选";
else chk.Text = (i+1).ToString().PadLeft(2, '0');
chk.Location = new Point(i % 12 * 50, i / 12 * 30);
chk.Width = 50;
chk.Name = "checkBox" + i;
this.Controls.Add(chk);
}
}

jaydawson 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangglemu 的回复:]
全选:
C# codeprivatevoid button1_Click(object sender, EventArgs e)
{foreach (Control cinthis.Controls)
{if (cis CheckBox)
{
(cas CheckBox).Checked=true;//全不选只要为false }
}
}
[/Quote]

楼上的写法,会把全选反选都算进去了。
LZ可以试试CheckedListBox控件试试,
或者:将所有需要选择的CheckBox放在某个Panel里,再使用楼上的方法。

zenjj777 2010-02-06
  • 打赏
  • 举报
回复
动态创建CheckBox呢?
  • 打赏
  • 举报
回复
全选:
private void button1_Click(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
if (c is CheckBox)
{
(c as CheckBox).Checked = true;//全不选只要为false
}
}
}
wzuomin 2010-02-06
  • 打赏
  • 举报
回复
学习
anguslaigz 2010-02-06
  • 打赏
  • 举报
回复
UP

111,123

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧