「作って覚えるVisualC#2017デスクトップアプリ入門」という書籍を使って学習をしています。
書籍中にマウスでフォームをドラックし移動させるプログラムがありました。
C#
1 // テキストボックスをマウスでクリックしたとき 2 private void FormFusen_MouseDown(object sender, MouseEventArgs e) 3 { 4 if(e.Button == MouseButtons.Left) 5 { 6 this.mouseX = e.X; 7 this.mouseY = e.Y; 8 } 9 } 10 11 // テキストボックスでクリックしたマウスを移動させたとき 12 private void FormFusen_MouseMove(object sender, MouseEventArgs e) 13 { 14 if(e.Button == MouseButtons.Left) 15 { 16 this.Left += e.X - mouseX; 17 this.Top += e.Y - mouseY; 18 } 19 }
私はこのプログラムを以下のように編集しても動くのではないかと考えました。
C#
1 // 省略 2 // テキストボックスでクリックしたマウスを移動させたとき 3 private void FormFusen_MouseMove(object sender, MouseEventArgs e) 4 { 5 if(e.Button == MouseButtons.Left) 6 { 7 this.Left = e.X; 8 this.Top = e.Y; 9 } 10 }
ところが、編集後のプログラムを動かすと、
ウィンドウが反復横跳びをするように動き回り、マウス位置にフォームが移動しません。
テキストのおかげで上のプログラムの仕組みは分かりました。
しかし、なぜ編集後のプログラムが変な挙動になってしまうのかが分かりません。
乱雑な質問で分かりにくいかとは思いますが、
もし分かるようでしたら、回答のほど宜しくおねがいます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/27 02:55