Как использовать 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();