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