C# 如何在运行时设置图片框的标记属性

C# 如何在运行时设置图片框的标记属性,c#,winforms,C#,Winforms,我想动态设置图片框的tag属性。 像这样的东西 tableLayoutPanel1.GetControlFromPosition(c, r).Tag = 1; 但是后来我比较喜欢 if(Convert.ToInt32(pb.Tag.ToString())==1) 它显示运行时错误“对象引用未设置为对象的实例” 编辑 得到了解决方案:- 问题是我没有更改正确的图片框标记值。即c,r值是错误的。当给定正确的c,r值时,其他一切都正常工作 一个可能解决您问题的愚蠢解决方案: public in

我想动态设置图片框的tag属性。 像这样的东西

tableLayoutPanel1.GetControlFromPosition(c, r).Tag = 1;
但是后来我比较喜欢

 if(Convert.ToInt32(pb.Tag.ToString())==1)
它显示运行时错误“对象引用未设置为对象的实例”

编辑 得到了解决方案:-
问题是我没有更改正确的图片框
标记
值。即c,r值是错误的。当给定正确的c,r值时,其他一切都正常工作

一个可能解决您问题的愚蠢解决方案:

 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;
    }
 }

请记住,使用正则表达式验证整数要快得多,也更合理。我写这个答案是为了向您展示如何以低级方式进行验证

可能是您将
标记设置为错误的控件或实例,而不是设置为
pb
picturebox。当您试图读取
pb
标记时,如果对象引用未设置为对象的实例,则会发生错误,并且该标记从未设置过

您可以测试第一行是否实际使用了
PictureBox
-控件:

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

如果
GetControlFromPosition()
-方法的返回不是
PictureBox
,这将产生强制转换异常错误。如果没有,则可能是使用了错误的实例。

刚才编写的内容有什么问题?它没有设置标记=1发生了什么?你有错误吗?你在调试器中看到了什么?@SLaks稍后当我在if(Convert.ToInt32(pb.Tag.ToString())==1)这样的if条件下比较它时,它给出了一个运行时错误对象引用,没有设置为对象的实例。尝试查看
pb.Tag.ToString()
的值,我确信它包含的不是整数
((PictureBox)tableLayoutPanel1.GetControlFromPosition(c, r)).Tag = 1;