如何在运行时设置图片框的标签属性
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
图片框。当您尝试读取pb
的Tag
并且从未设置过时,会出现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)
请记住,使用正则表达式来验证整数既更快又更合理,我刚刚写了这个答案来向您展示如何以低级方式进行。
【讨论】:
以上是关于如何在运行时设置图片框的标签属性的主要内容,如果未能解决你的问题,请参考以下文章