Как использовать BringToFront(); должным образом?

Так что я работал над небольшим игровым проектом под названием экономика и столкнулся с небольшой проблемой. Я хочу нарисовать человечка на экране, когда кто-то нанимает нового сотрудника, я делаю это, создавая новый графический блок и назначая ему изображение человечка. Однако, поскольку мне нужно было делать это снова и снова (чтобы у них могло быть неограниченное количество сотрудников), мне пришлось каждый раз создавать новый объект.

Чтобы убрать палочников, когда кто-то их уволил, я добавил новую графическую рамку поверх старых палочников, которая просто белая, так что выглядит так, будто они исчезают. Однако по какой-то причине BringToFront(); кажется, не работает с ним, и поэтому я не могу нарисовать белую картинку поверх человечков.

Если бы кто-то мог сказать мне, почему он не работает, или как можно сослаться на оригинальные картинки с наклейками, чтобы изменить их образ, это было бы замечательно.

public void Hire_Worker_Click(object sender, EventArgs e)
{
    workers++;
    money -= 10000;

    PictureBox WPB = new PictureBox();
    //Set location and size of new picturebox
    WPB.Image = Economy.Properties.Resources.Worker;
    WPB.Width = 68;
    WPB.Height = 118;
    WPB.Location = new Point(workerx,400);
    workerx += 68;
    Controls.Add(WPB);
}

public void Fire_Worker_Click(object sender, EventArgs e)
{
    if (workers > 1)
    {
        clickfire++;
        workers--;
        money -= 100;

        if (clickfire == 1)
        {
            workerx -= 68;
        }

        PictureBox WWPB = new PictureBox();
        //Set location and size of picturebox
        WWPB.BringToFront();
        WWPB.Image = Economy.Properties.Resources.whiteworker;
        WWPB.Width = 68;
        WWPB.Height = 118;
        WWPB.Location = new Point(workerx, 375);
        workerx -= 68;
        Controls.Add(WWPB);
    }
}

1 ответ

Решение

BringToFront работает только тогда, когда элемент управления уже находится в родительском элементе, поэтому переместите эту строку:

Controls.Add(WWPB);
WWPB.BringToFront();
Другие вопросы по тегам