C# WinForms 'this.Controls.Find'在单独的类中



我正在尝试将我的程序划分为类以减少混乱并提高可读性。

在我的一种方法中,我需要在屏幕上找到标签的位置。

this.Controls.Find我将所有内容移动到单独的类之前工作过,但它不再存在,因为我不再在与控件相同的类中执行它。我尝试了Main.Controls.Find(Main.cs是我的表单执行和设置的地方),但这也没有用,我收到错误,"非静态字段、方法或属性'Control.Controls'需要对象引用"

如何引用控件?是否需要添加额外的 using 语句?

谢谢

乔希

您需要对表单的引用,并传递给新引入的方法(或类)。

以前

public class Main : Form {
   public void Whatever() {
       ...
       this.Controls.Find(...);
   } 
}

public class Main : Form {
    public void Whatever() {
        ...
        new Helpers().HelperMethod( this );
    }
}
public class Helpers {
    public void HelperMethod( Form form ) {
        ...
        form.Controls.Find
    }
}

public class Main : Form {
    public void Whatever() {
        ...
        new Helpers( this ).HelperMethod();
    }
}
public class Helpers {
    private Form Form { get; set; }
    public Helpers( Form form ) {
        this.Form = form;
    }
    public void HelperMethod() {
        ...
        this.Form.Controls.Find
    }
}

最新更新