[英]How do I access my control from another method
我正在入侵太空,我想讓子彈從我的大炮所在的位置出來。 當我按空格鍵時,會發射子彈,但我需要它能在每次按空格鍵時訪問cannonX的位置,因此不允許我訪問其信息。
public void tsbtnStart_Click(object sender, EventArgs e)
{
// Make invader
Invader invaderX = new Invader();
pnlBattleField.Controls.Add(invaderX);
// Mke UFO
Ufo ufoX = new Ufo();
pnlBattleField.Controls.Add(ufoX);
// Make cannon
Cannon cannonX = new Cannon(this.pnlBattleField.Height - 80);
if (made == false)
{
pnlBattleField.Controls.Add(cannonX);
made = true;
}
Point location = cannonX.PointToScreen(Point.Empty);
tmrClock.Interval = 200;
tmrClock.Start();
tmrClock2.Interval = 100;
tmrClock2.Start();
}
public void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Space)
{
Bullet bulletX = new Bullet(this.pnlBattleField.Height - 80, location.x );
// "location does not exist in current context
pnlBattleField.Controls.Add(bulletX);
}
}
location
和cannonX
是局部變量tsbtnStart_Click
,所以他們不復存在一次tsbtnStart_Click
返回。 使它們成為您類的屬性,以便它們可以保留並在Form1_KeyPress
和其他方法中可以訪問。
好吧,你聲明
Point location = cannonX.PointToScreen(Point.Empty);
在您的方法中:
public void tsbtnStart_Click(object sender, EventArgs e)
您首先需要在類成員中聲明此位置。 之后,您將用正確的值覆蓋他的值。
像這樣:
private Point location = new Point();
location = cannonX.PointToScreen(Point.Empty); // in your method
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.