有人知道我怎么写“ cardImage1.BorderStyle = BorderStyle.Fixed3D;”。无需显式声明“ cardImage1”?
我正在尝试将其放入一种方法中,这样,当单击一个图片框时,对于每个单个图片框(有52个!),我无需编写代码即可在两个边框样式之间切换。
例如对于当前的每个框,我都需要在其_click事件中包含以下内容。
if (cardImage1.BorderStyle == BorderStyle.None)
{
cardImage1.BorderStyle = BorderStyle.Fixed3D;
}
else
{
cardImage1.BorderStyle = BorderStyle.None;
}
最佳答案
您可以编写一个方法来处理所有图片框的点击,而不是为每个图片框创建处理程序:
protected void onClickHandler(object sender, EventArgs e)
{
if (((PictureBox)sender).BorderStyle == BorderStyle.None)
{
((PictureBox)sender).BorderStyle = BorderStyle.Fixed3D;
}
else
{
((PictureBox)sender).BorderStyle = BorderStyle.None;
}
}
您还可以编写一个循环以遍历窗体上的所有控件,并将事件处理程序附加到所有图片框(如果可能的话,在您的情况下)
// in your form load event do something like this:
foreach(Control c in this.Controls)
{
PictureBox pb = c as PictureBox;
if(pb != null)
pb.Click += new EventHandler(onClickHandler); // where onClickHandler is the above function
}
当然,如果窗体上还有其他图片框,则解决方案是将您感兴趣的52个图片框放在面板中,然后而不是遍历窗体中的所有控件(this.Controls),而仅遍历控件在面板中(thePanelControl.Controls)
关于c# - 使用方法切换BorderStyle。 C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1393850/