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

Posted

技术标签:

【中文标题】如何在运行时设置图片框的标签属性【英文标题】:How to set Tag Property of a Picture Box at run time 【发布时间】:2014-07-24 06:47:42 【问题描述】:

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

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

但后来当我比较喜欢时

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

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

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

【问题讨论】:

你刚才写的有什么问题? 它没有设置标签=1 会发生什么?你有错误吗?您在调试器中看到了什么? @SLaks 稍后当我在 if(Convert.ToInt32(pb.Tag.ToString())==1) 这样的 if 条件下比较它时,它会给出运行时错误 Object reference not set to一个对象的实例。 试试看pb.Tag.ToString()的值,我确定它包含不是整数的东西 【参考方案1】:

您可能将Tag 设置为错误的控件或实例,而不是pb 图片框。当您尝试读取pbTag 并且从未设置过时,会出现Object reference not set to an instance of an object 错误。

你可以测试第一行是否真的使用了PictureBox-control:

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

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

【讨论】:

【参考方案2】:

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

 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)

请记住,使用正则表达式来验证整数既更快又更合理,我刚刚写了这个答案来向您展示如何以低级方式进行。

【讨论】:

以上是关于如何在运行时设置图片框的标签属性的主要内容,如果未能解决你的问题,请参考以下文章

visual C#中如何设置Lable标签背景透明

img标签无图片时,不同浏览器高度计算问题

如何在python中获取熊猫数据框的行列表? [复制]

属性优先级图片属性设置内联标签设置大小

js 设置img标签的src资源无法找到的替代图片(通过img的属性设置)

如何在运行时将文本框的文本设置为粗体?