我不知道我是否仍然缺少此功能,但是每当要添加PictureBox时,只需在Toolbox上找到它并将其拖到UI上即可。但是我要做的是通过添加PictureBox进行编码,然后我想要将其向右移动。我在Timer上编写了代码,这就是我的工作方式。
private void enemyMove_Tick(object sender, EventArgs e)
{
GameMenu menu = new GameMenu();
if (menu.cmbox_Level.Text.Equals("Easy"))
{
this.Controls.Add(menu.EnemyTank);
menu.EnemyTank.Width = 26;
menu.EnemyTank.Height = 32;
menu.EnemyTank.BackgroundImage = Properties.Resources.Tank_RIGHT_v_2;
menu.EnemyTank.BackgroundImageLayout = ImageLayout.Stretch;
menu.EnemyTank.Left += 2;
}
}
不要问我计时器是否启动。是的,它已经开始,已在表单上编码。但是以某种方式,当我启动程序时,它不会移动。但是后来我尝试添加PictureBox,这次我尝试将其拖动到UI,然后在其上添加一个Image,然后通过向右移动对其进行编码。当我启动程序时,它可以工作。但是我想要的是,每当我启动按钮时,它只会使随机PictureBox向右移动。 Idk这里缺少什么。
答案 0 :(得分:0)
我做了一些假设。如果我的假设不正确,请更新您的帖子以获取详细信息。以下内容是从我的评论中复制的。
GameMenu
将始终创建新的EnemyTank
。EnemyTank
的默认Left
值是固定的; 您的enemyMove_Tick
继续创建GameMenu
和EnemyTank
。
也就是说,每个刻度都将创建一个EnemyTank
,并将代码中的值更改为“默认值加2”。
为避免这种情况,您必须将EnemyTank
实例保留在某个地方,而不是继续创建它。
这是一个例子。
GameMenu m_menu;
void YourConstructor()
{
// InitializeComponent();
// something else in your form constructor
m_menu = new GameMenu();
m_menu.EnemyTank.Width = 26;
m_menu.EnemyTank.Height = 32;
m_menu.EnemyTank.BackgroundImage = Properties.Resources.Tank_RIGHT_v_2;
m_menu.EnemyTank.BackgroundImageLayout = ImageLayout.Stretch;
this.Controls.Add( m_menu.EnemyTank );
}
private void enemyMove_Tick(object sender, EventArgs e)
{
if (menu.cmbox_Level.Text.Equals("Easy"))
{
m_menu.EnemyTank.Left += 2;
}
}