如何从另一个窗体中更改窗体的属性,c# . net

本文关键字:窗体 属性 net 另一个 | 更新日期: 2023-09-27 18:14:57

我在Form3中有一个特定标签的按钮,我想从Form2更改其背景图像。我该怎么做呢,我试过了:

foreach ( Button but in Bridge.Form3)
{
    if (but.Tag == tagcheck)
    {
        but.BackgroundImage = Properties.Resources.inactive;
    }
}

我的项目名称是Bridge,我想要的图像在我的资源中名为inactive。我得到一个错误,在文本桥下。对此

我试过了:

foreach (Control ctrl in Form3.Controls )
{
     if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck)
     {
         ((Button)ctrl).BackgroundImage = Properties.Resources.inactive;
     }
}

我得到错误消息:非静态字段、方法或属性需要对象引用表单2已经实例化了

如何从另一个窗体中更改窗体的属性,c# . net

试试这个:

//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-如果你必须初始化目标表单:

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;
            }
        }