我试图遍历一些控件,然后从控件的位置,宽度和高度创建一个矩形,并将其添加到列表中。
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
附加信息:对象引用未设置为的实例 对象
有人可以对此有所了解,以便我可以解决它吗?
答案 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 null
和C#
无法处理null.ToString()
时,您可能会收到例外情况。所以最好在从它访问值之前检查null。
if (!(gr.Tag is null) && gr.Tag.ToString() == "Blur")
{
//Here comes your code
}