大佬们,望不吝赐教。

寻找更好的存在 2017-10-27 08:54:37
private void Form1_Load(object sender, EventArgs e)
{
this.Text="动态控件使用示例";
int num = 1;
for ( int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
Button btn=new Button();
btn.Width=24;
btn.Top = i * 24;
btn.Left = j * 24 + 50;
btn.Text = num.ToString();
Controls.Add(btn);
//调用方法(控件类的添加方法)将btn对象添加到窗体中
btn.Click += new EventHandler(btn_Click);
num = num + 1;
}
}

Label lbl = new Label();
lbl.Top = 110;
lbl.Left = 64;
lbl.Name = "LabelD";
Controls.Add(lbl);//将lbl对象添加到窗体的指定位置
}
private void btn_Click(object sender,EventArgs e)
{
//9个按钮都共享本事件处理程序,sender返回具体是哪个按钮触发了本事件
Button b = (Button)sender;//声明一个button类型的变量,获取得到本事件的具体按钮
b.Text = "对";
Label newlabel = (Label)Controls.Find("labelID", true)[0];
//调用controls类的Find方法查找Name属性为“LabeID”的控件
newlabel.Text = "你单击了" + b.Text + "号按钮";

可以打开运行界面,但是点击生成的button时就会显示下面的东西。
发生了 System.IndexOutOfRangeException
HResult=0x80131508
Message=索引超出了数组界限。
Source=WindowsFormsApplication1
...全文
235 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
易2017 2017-10-27
  • 打赏
  • 举报
回复
数组有5个值,你引用了第六个
  • 打赏
  • 举报
回复
那,大佬,在数组下标里的“使用的角标大于等于数组的长度或为负数”这句话是什么意思呀?
xdashewan 2017-10-27
  • 打赏
  • 举报
回复
数组下标越界错误
FainSheeg 2017-10-27
  • 打赏
  • 举报
回复
你加载窗体 的时候动态添加 的是"LabelD" 点击按钮查找的是"labelID" 不同的嘛,所以Find得到的是一个空数组,所以下标越界。

110,539

社区成员

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

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

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