IF语句检查Control是否具有标记值

时间:2015-12-17 01:07:09

标签: c#

我试图遍历一些控件,然后从控件的位置,宽度和高度创建一个矩形,并将其添加到列表中。

C#

List<Rectangle> MaskBlocks = new List<Rectangle>();
foreach (StackPanel gr in FindVisualChildren<StackPanel>(Container))
  if (gr.Tag.ToString() == "Blur")
  {
      System.Windows.Point tmp = gr.TransformToAncestor(this).Transform(new System.Windows.Point(0, 0));
      MaskBlocks.Add(new System.Drawing.Rectangle(new System.Drawing.Point((int)tmp.X,(int)tmp.Y), new System.Drawing.Size((int)gr.ActualWidth, (int)gr.ActualHeight)));
  }

当我运行代码时,我在IF语句中得到一个错误:

  

类型'System.NullReferenceException'的未处理异常   发生在BlurEffectTest.exe

     

附加信息:对象引用未设置为的实例   对象

有人可以对此有所了解,以便我可以解决它吗?

2 个答案:

答案 0 :(得分:3)

错误说你gr.Tag是null所以它失败了。检查是否为空

List<Rectangle> MaskBlocks = new List<Rectangle>();
foreach (StackPanel gr in FindVisualChildren<StackPanel>(Container))
if (gr.Tag!= null && gr.Tag.ToString() == "Blur")
{
    System.Windows.Point tmp = gr.TransformToAncestor(this).Transform(new System.Windows.Point(0, 0));
    MaskBlocks.Add(new System.Drawing.Rectangle(new System.Drawing.Point((int)tmp.X,(int)tmp.Y), new System.Drawing.Size((int)gr.ActualWidth, (int)gr.ActualHeight)));
}

答案 1 :(得分:2)

gr.Tag is nullC#无法处理null.ToString()时,您可能会收到例外情况。所以最好在从它访问值之前检查null。

if (!(gr.Tag is null) && gr.Tag.ToString() == "Blur")
 {
  //Here comes your code
 }