非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

C#: 付箋紙みたいにどこを掴んでも移動できるようにするには

      2016/06/11

[ad#top-1]
 

前回のブログで、

付箋紙みたいにタイトルバーなし&タスクバー非表示にするには
http://non-it-salaryman.blogspot.jp/2015/10/c.html

を書きましたが、今度は第二弾としてどこを掴んでもドラッグできるようにする方法です。

まず前提として、ラベルをフォーム内目いっぱい広げて設置します。これはあとで付箋紙に文字を入れることになりますが、フォームには文字が書き込めないので。前回はフォームをダブルクリックして終了させていましたが、今回はフォームがLabelに隠れてしまうので、Labelをダブルクリック時に終了へと変えています。

using System;
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]

スポンサーリンク

 - C#応用編