C# Windows窗体,从主窗体中的类访问picturebox

C# Windows窗体,从主窗体中的类访问picturebox,c#,visual-studio,2d,C#,Visual Studio,2d,我正在做一个游戏,我想让事情失败,球员应该努力抓住它 目前,我掉落的物品是在一个与主形态分离的类别中绘制和制作的,因此当我试图从主形态中访问它们时,我控制着重力。我似乎找不到picturebox(picCoin) 你能看一下我的代码,并提供一些解决方案吗 这是我制作硬币的课程 class Coin { private PictureBox picCoin = new PictureBox(); public Coin() { picCoin.BackCo

我正在做一个游戏,我想让事情失败,球员应该努力抓住它

目前,我掉落的物品是在一个与主形态分离的类别中绘制和制作的,因此当我试图从主形态中访问它们时,我控制着重力。我似乎找不到picturebox(picCoin)

你能看一下我的代码,并提供一些解决方案吗

这是我制作硬币的课程

class Coin
{

    private PictureBox picCoin = new PictureBox();
    public Coin()
    {
        picCoin.BackColor = Color.Transparent;
        picCoin.ImageLocation = @"C:\Users\sebfre1104\source\repos\SPEL\SPEL\Resources\hamburger.png";
        picCoin.Width = 100;
        picCoin.Height = 100;
        picCoin.SizeMode = PictureBoxSizeMode.StretchImage;     
    }
    public void DrawTo(Form f)
    {
        f.Controls.Add(picCoin);
    }
    public Rectangle getBounds()
    {
        return picCoin.Bounds;   
    }
    public void setposition(int x, int y)
    {        
        picCoin.Location = new Point(x, y);
    }

}
我想以我的主要形式到达这枚皮卡币,这样我就可以在私人空间中增加重力时间重力(物体发送者,事件发送者)

公共部分类表单1:表单
{
bool-IsJumping=false;
List clist=新列表();
int poäng=0;
公共表格1()
{
初始化组件();
}
私有void TimerGravitation_Tick(对象发送方,事件参数e)
{
如果(!picSpelare.Bounds.IntersectsWith(picMark.Bounds)&&IsJumping==false)
{
微微偏上+=10;
}
}

如果有任何提示,我将不胜感激,因为这是我在课堂上的最后一个项目。

我不知道我是否正确理解了这个问题,但请将picCoin公之于众

制造


我不知道我是否正确理解了这个问题,但请将picCoin公之于众

制造


首先,您应该遵循(将picCoin从私人转到公共)

然后您应该在Form1构造函数中初始化Coin类,如下所示:

private Coin _coin;
public Form1()
{
    InitializeComponent();
    _coin = new Coin();
}
this.Controls.Add(_coin.picCoin)
然后您应该将Coin类中的图片框添加到Form1控件列表中,如下所示:

private Coin _coin;
public Form1()
{
    InitializeComponent();
    _coin = new Coin();
}
this.Controls.Add(_coin.picCoin)
您也可以在表单1构造函数中执行此操作。
不要将PictureBox从Coin类添加到表单控件中(方法DrawTo())。

首先,您应该遵循(将picCoin从private转到public)

然后您应该在Form1构造函数中初始化Coin类,如下所示:

private Coin _coin;
public Form1()
{
    InitializeComponent();
    _coin = new Coin();
}
this.Controls.Add(_coin.picCoin)
然后您应该将Coin类中的图片框添加到Form1控件列表中,如下所示:

private Coin _coin;
public Form1()
{
    InitializeComponent();
    _coin = new Coin();
}
this.Controls.Add(_coin.picCoin)
您也可以在表单1构造函数中执行此操作。 不要将PictureBox添加到Coin类的窗体控件中(方法DrawTo()

要使用/访问该框,请执行以下操作:

clist[i].Box // This is what you want 
要使用/访问该框,请执行以下操作:

clist[i].Box // This is what you want 

我刚刚尝试过,但我仍然无法在主窗体中访问它,它无法识别picCoin严重性代码描述项目文件行抑制状态错误CS0103当前上下文中不存在名称“picCoin”SPEL C:\Users\sebfre1104\source\repos\SPEL\SPEL\Form1.cs 28 ActiveCoin test=new Coin();执行此操作并从测试中调用。picCoin抱歉,我不理解,但我应该将其添加到我的主窗体或类coin中吗?我刚刚尝试过,但仍然无法在主窗体中访问它,它无法识别picCoin严重性代码描述项目文件行抑制状态错误CS0103当前上下文中不存在名称“picCoin”:\Users\sebfre1104\source\repos\SPEL\SPEL\Form1.cs 28 ActiveCoin test=new Coin();执行此操作并从测试中调用它。piccoin很抱歉,我不理解,但我应该将其添加到我的主表单或课堂Coin中吗?感谢您的帮助,我真的不太擅长理解,因为这是我编程的第一个月,所以请尝试进行开发“然后,您应该将PictureBox从Coin类添加到Form1控件列表中,如下所示:this.controls.add(_Coin.picCoin)您也可以在Form1构造函数中执行此操作。不要将PictureBox从Coin类(方法DrawTo())添加到表单控件中。”。“基本上,这意味着这就是你的Form1类构造函数应该是什么样子:
private Coin\u Coin;public Form1(){InitializeComponent();\u Coin=new Coin();this.Controls.Add(_Coin.picCoin)}
我现在这样做了:private Coin\u Coin=new Coin();public Form1(){InitializeComponent()coin=newcoin();this.Controls.Add(coin.picCoin);}这是对的吗?我似乎不明白我们把这个.Controls.Add(coin.picCoin)放在哪里了;是的,这是正确的。此外,您不需要像这里那样两次初始化Coin类。您可以使用以下类型之一的初始化:1)
private Coin\u Coin=new Coin();
\u Coin=new Coin();
在构造函数中或2)从构造函数中初始化:
private Coin\u Coin;public Form1(){u Coin=new Coin()}
您的问题似乎已经解决。您可以单击'✔' 将适当的回答标记为答案。感谢您的帮助,我并不太擅长理解,因为这是我编程的第一个月,所以您可以尝试“开发”,然后您应该将图片框从Coin类添加到Form1控件列表中,如下所示:this.controls.add(_Coin.picCoin)您也可以在Form1构造函数中这样做。不要将PictureBox从Coin类(方法DrawTo())添加到表单控件中。“基本上,这意味着您的Form1类构造函数应该是这样的:
private Coin(硬币);public Form1(){InitializeComponent();(硬币=新硬币();this.Controls.add(_Coin.picCoin);}
我现在这样做了:私有硬币_Coin=new Coin();公共表单1(){InitializeComponent();_Coin=new Coin();this.Controls.Add(_Coin.picCoin);}这是对的吗?似乎无法理解我们放了这个。Controls.Add(_Coin.picCoin);是的,这是正确的。此外,您不需要像这里那样两次初始化Coin类。您可以使用以下类型之一的初始化:1)
private Coin\u Coin=new Coin();
\u Coin=new Coin();
在构造函数中或2)从构造函数中初始化:
private Coin\u Coin;public Form1(){u Coin=new Coin()}
您的问题似乎已经解决。您可以单击'✔' 标记适当的re