2017-02-04 4 views
0

Я хочу вызвать функцию вроде Spawn() в этом случае, но без потери ее значений после ее вызова (например, я хочу, чтобы entityPicture был доступен после того, как я позвоню Spawn(), поэтому могу используйте его позже на функции MainWindow_KeyDown()). То же самое с X и другими переменными.C# - Сохранение значений из функций

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace EpicGame 
{ 
    public partial class MainWindow : Form 
    { 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    public void MainWindow_Load(object sender, EventArgs e) 
    { 
     int EntityCount = 0; 
     Background.ImageLocation = "Background.jpg"; 
     Background.SizeMode = PictureBoxSizeMode.AutoSize; 

     Spawn(600, 600, EntityCount, "Player 1.png"); EntityCount++; 
    } 

    // Controls 
    public void MainWindow_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.D) MoveRight(); 
     entityPicture.Location = new Point(X, Y); 
    } 

    // Movement 
    public void MoveRight() 
    { 
     X++; 
    } 

    // Entity spawning 
    public void Spawn(int X, int Y, int ID, string Path) 
    { 
     PictureBox entityPicture = new PictureBox(); 
     Image Entity = Image.FromFile(Path); 
     entityPicture.Image = Entity; 
     entityPicture.SizeMode = PictureBoxSizeMode.AutoSize; 
     entityPicture.Location = new Point(X, Y); 
     entityPicture.BackColor = Color.Transparent; 
     Controls.Add(entityPicture); 
     entityPicture.BringToFront(); 
    } 

    private void Background_Click(object sender, EventArgs e) 
    { 

    } 
    } 
} 

ответ

0

Вы можете объявить его общественность в классе формы, как:

public partial class MainWindow : Form 
    { 
     PictureBox entityPicture = new PictureBox();           

    } 

Я не знаю, типа entityPicture так просто используется PictureBox в качестве примера, что вы используете правильный тип.

0

Ваша корневая проблема является одной из областей. Посмотрите на этом видео, он проходит через ваш точный вопрос: https://www.youtube.com/watch?v=NemPMKTxM7w

Вы можете технически двигаться entityPicture к верхней части класса, однако данному это представляется окно WinForms, я хотел бы добавить PictureBox с помощью дизайнера так он объявляется только один раз. Если вы объявите его на уровне класса и повторно инициализируете его в Spawn (т. Е. = new PictureBox()), вы собираетесь создать утечку памяти.

Смежные вопросы