如何从另一种方法到达PictureBox?

时间:2014-04-16 16:47:27

标签: c# winforms methods static

为了让我的问题尽可能短,这是我的代码。我写下了我收到的错误。

public partial class VH : Form
{
    public VH()
    {
        InitializeComponent();
        //I can reach the pictureBox1 from here, but that's not what I want.
    }

    public static List<PictureBox> listPB;

    public static bool mV()
    {
        bool Test = true;

        listPB = new List<PictureBox>();
        listPB.Add(pictureBox1);  // <--- ERROR: An object reference is required for the non-static field, method, or property '...pictureBox1'

        return Test;
    }

我知道我必须以某种方式使PictureBox静态或可用,但我不知道如何。

1 个答案:

答案 0 :(得分:3)

我想那个picturebox1是你在设计师中添加的VH控件。

现在你的代码&#34;静态&#34;表示函数,变量或其他任何可以标记为static的函数都不会绑定到类的实例。

所以目前来自另一个类的VH.listPB或VH.mV()调用将是绝对有效的,因此你会得到错误。 picturebox1不是静态的,它需要VH的实例,但可以在没有VH的基础实例的情况下调用mV()。

    public bool mV()
    {
        bool Test = true;
        listPB = new List<PictureBox>();
        listPB.Add(pictureBox1);

        return Test;
    }

没有静态代码虽然不是很有用,但代码有效。