我想动态设置图片框的标签属性。 像这样的事情
tableLayoutPanel1.GetControlFromPosition(c, r).Tag = 1;
但后来当我比较
时 if(Convert.ToInt32(pb.Tag.ToString())==1)
它显示运行时错误"对象引用未设置为对象的实例。"
修改
得到了解决方案: -
问题是我没有更改正确的图片框Tag
值.c,r值是错误的。当给出正确的c,r值时,其他所有其他工作正常。
答案 0 :(得分:0)
可能解决您问题的愚蠢解决方案:
public int AbsoluteValue (String Input) {
String Temp = String.Empty;
for (int i = 0; i < Input.Lenght; i++) {
if (isDigit(Input[i]))
Temp += Input[i];
}
return int.Parse(Temp);
}
public Boolean isDigit (char c) {
try {
int.Parse(c.ToString());
return true;
}
catch (Exception) {
return false;
}
}
然后你可以
if(AbsoluteValue(pb.Tag.ToString())==1)
请记住,使用Regex验证整数是更快更合理的,我只是写了这个答案,告诉你如何以低级方式做到这一点。
答案 1 :(得分:0)
您可能将Tag
设置为错误的控件或实例,而不是pb
图片框。当您尝试阅读Object reference not set to an instance of an object
Tag
并且从未设置过pb
时,会出现PictureBox
错误。
您可以测试第一行是否实际使用((PictureBox)tableLayoutPanel1.GetControlFromPosition(c, r)).Tag = 1;
- 控件:
GetControlFromPosition()
如果PictureBox
- 方法的返回值不是{{1}},则会产生强制转换异常错误。如果没有,你可能使用了错误的实例。