我有一些在Form3中使用特定标记标识的按钮,其背景图像我想从Form2更改。我怎么做,我试过了:
foreach ( Button but in Bridge.Form3)
{
if (but.Tag == tagcheck)
{
but.BackgroundImage = Properties.Resources.inactive;
}
}
我的项目名称是Bridge,我想要的图像位于名为inactive的资源中。我在文本Bridge.Form3
下得到一个错误我试过了这个:
foreach (Control ctrl in Form3.Controls )
{
if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck)
{
((Button)ctrl).BackgroundImage = Properties.Resources.inactive;
}
}
我收到错误消息:非静态字段,方法或属性需要对象引用 表格2已经实例化。
答案 0 :(得分:0)
试试这个:
//You have to fill this variable (e.g. in constructor) with a reference to the object of you form
public Form3 refF3;
public void test() {
foreach (Control ctrl in refF3.Controls) {
if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck) {
((Button)ctrl).BackgroundImage = Properties.Resources.inactive;
{
}
}
答案 1 :(得分:0)
以下是两种获取控件对象引用的方法:
1-如果您必须初始化目标表单:
2-如果目标表格已经打开
Control.ControlCollection f3_ctrls;
//Case 1
Form3 f3 = new Form3();
f3.Show();
f3_ctrls = f3.Controls;
//Case 2
f3_ctrls = (Application.OpenForms["Form3"]).Controls;
foreach (Control ctrl in f3_ctrls)
{
if ((ctrl is Button) && ctrl.Tag.Equals("myTag"))
{
ctrl.BackColor = Color.White;
}
}