簡體   English   中英

如何從其他方法訪問控件

[英]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);
        }

    }

locationcannonX是局部變量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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM