C#: 付箋紙みたいにどこを掴んでも移動できるようにするには
2016/06/11
[ad#top-1]
前回のブログで、
付箋紙みたいにタイトルバーなし&タスクバー非表示にするには
http://non-it-salaryman.blogspot.jp/2015/10/c.html
を書きましたが、今度は第二弾としてどこを掴んでもドラッグできるようにする方法です。
まず前提として、ラベルをフォーム内目いっぱい広げて設置します。これはあとで付箋紙に文字を入れることになりますが、フォームには文字が書き込めないので。前回はフォームをダブルクリックして終了させていましたが、今回はフォームがLabelに隠れてしまうので、Labelをダブルクリック時に終了へと変えています。
using System.Drawing;
using System.Windows.Forms;
class StickyNote{
static void Main(){
Application.Run(new MainWindow());
}
}
class MainWindow : Form{
private Label label;
private Point mousePoint; //マウスのクリック位置を記憶
public MainWindow(){
this.Width = 200;
this.Height = 100;
this.FormBorderStyle = FormBorderStyle.None;
this.ShowInTaskbar = false;
//フォームに目いっぱいLabelを貼っておく。Labelをダブルクリックしたら終了
label = new Label(){
Dock = DockStyle.Fill,
BackColor = Color.LightPink,
BorderStyle = BorderStyle.FixedSingle,
Parent=this,
};
label.DoubleClick += new EventHandler(DoubleClicked);
label.MouseDown += new MouseEventHandler(MouseDowned);
label.MouseMove += new MouseEventHandler(MouseMoved);
}
//フォームダブルクリック時終了
private void DoubleClicked(object sender, EventArgs e){
Application.Exit();
}
//マウスのボタンが押されたとき
private void MouseDowned(object sender, System.Windows.Forms.MouseEventArgs e){
if ((e.Button & MouseButtons.Left) == MouseButtons.Left){
mousePoint = new Point(e.X, e.Y); //位置を記憶する
}
}
//マウスが動いたとき
private void MouseMoved(object sender, System.Windows.Forms.MouseEventArgs e){
if ((e.Button & MouseButtons.Left) == MouseButtons.Left){
this.Location = new Point(
this.Location.X + e.X – mousePoint.X,
this.Location.Y + e.Y – mousePoint.Y);
}
}
}
だんだん付箋紙らしくなってきましたね~。次回は文字の入力方法です。
※関連エントリー
[ad#ad-1]
スポンサーリンク