IF语句检查控件是否具有标记值
本文关键字:是否 语句 检查 控件 IF | 更新日期: 2023-09-27 18:27:03
im试图循环遍历一些控件,然后根据控件的位置、宽度和高度制作一个矩形,并将其添加到列表中。
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 中
附加信息:对象引用未设置为对象
有人能帮我解释一下吗?
错误表示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)));
}
当gr.Tag is null
和C#
无法处理null.ToString()
时,可能会出现异常。因此,在访问值之前最好先检查null。
if (!(gr.Tag is null) && gr.Tag.ToString() == "Blur")
{
//Here comes your code
}
不是最有效的,但在这里,这可能会帮助其他人:
if (!(gr.Tag is null) && gr.Tag.GetType() == typeof(string) && (gr.Tag as string) == "Blur")
{
}