private void MineClearance_Load(object sender, EventArgs e) { InitializeGame(); } public void InitializeGame() { int x = Convert.ToInt16(cbHorizontal.Text); int y = Convert.ToInt16(cbVertical.Text); int mineNum = Convert.ToInt16(cbMine.Text); for (int v = 0; v < y; v++) { for (int h = 0; h < x; h++) { Button btn = CreateBtn(h,v); btn.Tag = h + "," + v; panelMine.Controls.Add(btn); } } }
设置断点,当执行到 黄色填充的代码区时,按F11 后面的代码都不会执行,直接下去了?
怎么回事呢?
楼主是想把cbHorizontal.Text值转化为16进制,类型为int,这里边就涉及到边界值问题,你查阅下相关资料就可以解决。
try catch 下 ,看看情况
原因我找到了,是因为cbHorizontal.Text 没有默认值。
但是为什么会直接跳过去,不执行下面的代码呢?
@侠梦千年: 程序出错,就跳出当前的语句块
@二十三号同学: 出错的话,就会报出异常啊,可以没有异常,直接正常执行下去了,就是后面的一部分代码不执行。
另:设置了默认值之后,就没有这个问题了
1、程序集问题,你引用的程序集不是最新的。
2、或者你运行前改了代码,但是没有重新编译
原因我找到了,是因为cbHorizontal.Text 没有默认值。
但是为什么会直接跳过去,不执行下面的代码呢?
可以考虑用 int.TryParse 方法转换数据