Winフォームアプリで実行中にコントロールを移動させる
フォームアプリで、ゲームのようにキャラクタを移動させたい時があります
その方法についてみていきましょう
PictureBoxを移動させてみる
こんな感じで移動させてみましょう
考え方
一定時間ごとに、Locationの値を更新する
一定時間ごとにイベントを発生させる(メソッドを実行する)
Timerコンポーネントをフォームにドラッグ&ドロップして、プロパティで設定でも同じことができますが、今回は自作してみます
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ControlMove
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Timer timer = new Timer();
// 1000ms(1秒)毎にタイマーイベントを発生させる設定とします
timer.Interval = 1000;
}
}
}
イベントが発生したら、実行されるイベントハンドラ(メソッド)を作ります
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ControlMove
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Timer timer = new Timer();
// 1000ms(1秒)毎にタイマーイベントを発生させる設定とします
timer.Interval = 1000;
// イベントを登録します
// 次のコードを先に入力すると、PictureMoveのところが赤いアンダーラインでエラーになりますので、インテリセンスでメソッドを作成させます
timer.Tick += PictureMove;
}
private void PictureMove(object sender, EventArgs e)
{
}
}
}
Locationの値を更新する
イラストが移動するコードを作ります
int x = pictureBox1.Location.X;
x = x + 2;
pictureBox1.Location = new Point(x, pictureBox1.Location.Y);
今回は、Leftプロパティを使い、上記コードを簡略化します
pictureBox1.Left += 2;
完成コード
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ControlMove
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Timer timer = new Timer();
// 1000ms(1秒)毎にタイマーイベントを発生させる設定とします
timer.Interval = 1000;
// イベントを登録します
timer.Tick += PictureMove;
// タイマーを起動します
timer.Enabled = true;
}
private void PictureMove(object sender, EventArgs e)
{
pictureBox1.Left += 2;
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません