C# 删除控制组中的所有图像
应用此代码时,我没有获得选项C# 删除控制组中的所有图像,c#,button,foreach,controls,C#,Button,Foreach,Controls,应用此代码时,我没有获得选项.Image: foreach(Control b in _SelectionPanel.Controls) { if (b is Button) { b.Image = null; } } 但是,我可以获得“可见”选项: foreach(Control b in _SelectionPanel.Controls) { if (b is Button) { b.Visible = false;
.Image
:
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
b.Image = null;
}
}
但是,我可以获得“可见”选项:
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
b.Visible = false;
}
}
我正在尝试删除控制组中按钮的所有图像。有什么想法吗?
is
仅检查类型是否为按钮
您希望使用as
执行实际的强制转换,从而允许您访问按钮的属性。如果强制转换无效,您只需获得一个null
引用,因此只需执行as
强制转换,然后在使用它之前检查变量是否为null
foreach(Control b in _SelectionPanel.Controls)
{
Button castB = b as Button;
if (castB != null)
{
castB.Image = null;
}
}
is
仅检查类型是否为按钮
您希望使用as
执行实际的强制转换,从而允许您访问按钮的属性。如果强制转换无效,您只需获得一个null
引用,因此只需执行as
强制转换,然后在使用它之前检查变量是否为null
foreach(Control b in _SelectionPanel.Controls)
{
Button castB = b as Button;
if (castB != null)
{
castB.Image = null;
}
}
在循环的上下文中,
b
是一个控件。即使在检查之后。要获取图像属性,需要将其强制转换为按钮类型:
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
((Button)b).Image = null;
//Alternatively
(b as Button).Image = null;
}
}
在循环的上下文中,
b
是一个控件。即使在检查之后。要获取图像属性,需要将其强制转换为按钮类型:
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
((Button)b).Image = null;
//Alternatively
(b as Button).Image = null;
}
}
foreach(类型()的_SelectionPanel.Controls.OfType()中的变量b)
{
((按钮)b).Image=null;
}
您可以仅迭代button类型的控件,然后将变量显式强制转换为button。foreach(选择面板.controls.OfType()中的变量b)
{
((按钮)b).Image=null;
}
您可以只迭代button类型的控件,然后显式地将var强制转换为button。这是winforms吗?不管是什么,如果
控件
没有图像
属性,但实际运行时类型b
有,则需要将引用转换为实际运行时类型。(b为按钮)。Image=null代码>L.B:很遗憾,这不起作用。埃德:是的,我正在使用WinForms,好的,谢谢。@RichardJacobs是的,这是一个惰性代码:)这是WinForms?不管是什么,如果控件
没有图像
属性,但实际运行时类型b
有,则需要将引用转换为实际运行时类型。(b为按钮)。Image=null代码>L.B:不幸的是,这不起作用。埃德:是的,我正在使用WinForms,好的,谢谢。@RichardJacobs是的,这是一个懒惰的代码:)你打败了我。当我开始写我的时候,你的回复不在这里。这很有效。非常感谢你。我会接受这个答案,直到极限消失。马修斯·罗卡:无论如何,谢谢!:-)你赢了我。当我开始写我的时候,你的回复不在这里。这很有效。非常感谢你。我会接受这个答案,直到极限消失。马修斯·罗卡:无论如何,谢谢!:-)您也可以使用foreach(在_selectionPanel.Controls.OfType()中的按钮b)
,这样您就不必在代码中强制转换它。谢谢,实际上我不知道,为了避免编译错误(我想它会出错),我写了您也可以使用foreach(在_selectionPanel.Controls.OfType()中的按钮b)
这样您就不必在代码中强制转换它了。谢谢,实际上我不知道这一点,只是为了避免编译错误(我认为它会出错),我写了这个