如何在运行时设置图片框的标签属性

时间:2014-06-03 19:38:10

标签: c# winforms

我想动态设置图片框的标签属性。 像这样的事情

tableLayoutPanel1.GetControlFromPosition(c, r).Tag = 1;

但后来当我比较

 if(Convert.ToInt32(pb.Tag.ToString())==1)

它显示运行时错误"对象引用未设置为对象的实例。"

修改 得到了解决方案: -  问题是我没有更改正确的图片框Tag值.c,r值是错误的。当给出正确的c,r值时,其他所有其他工作正常。

2 个答案:

答案 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}},则会产生强制转换异常错误。如果没有,你可能使用了错误的实例。