C#で付箋紙を作る(第二回目) 付箋紙本体を作る
2017/07/17
前回の記事はこちら。
前回は仕様に関して書いただけですが、今回より実際にプログラミングしていきましょう。
まずは今回の機能について
今回はパラメーターの保存の部分はさておいて、付箋紙の実体を作ります。
アプリを起動するとこんなものが現れます。もちろんどこでも掴んでドラッグすると自由に動きます。
表面をダブルクリックすると以下のようになり、テキストが書き込めます。サイズ変更もこの時にできるようになっています。
もう一度ダブルクリックすると編集モードから付箋紙に切り替わります。
右クリックすると以下のメニューが現れます。「新規付箋紙」をクリックしましょう。
はい、新しい付箋紙が現れました。
右クリックのメニューで「この付箋紙を捨てる」をクリックすると対象の付箋紙は消えてなくなります。
・・・というどこにでもある付箋紙の動きをします。
[ad#top-1]
ソースコード全文
こちらがソースコードです。サイズや背景色は固定で作っていますが、後々これをxmlファイルに保持して変更できるようにします。今回はあくまで付箋紙本体をザクっと作ったところまでです。
using System;
using System.Drawing;
using System.Windows.Forms;
class Sticky{
static void Main(){
Application.Run(new StickyNote());
}
}
partial class StickyNote : Form{
private Point mousePoint; //マウスのクリック位置を記憶
private Label label;
private TextBox textBox;
public StickyNote(){
this.StartPosition = FormStartPosition.CenterScreen;
this.Width = 200;
this.Height = 100;
this.Text = "付箋紙";
this.FormBorderStyle = FormBorderStyle.None;
this.ShowInTaskbar = false;
this.MouseDown += new MouseEventHandler(MouseDowned);
this.MouseMove += new MouseEventHandler(MouseMoved);
this.DoubleClick += new EventHandler(DoubleClicked);
this.setComponents();
}
private void DoubleClicked(object sender, EventArgs e){
if(this.FormBorderStyle == FormBorderStyle.None){
this.FormBorderStyle = FormBorderStyle.Sizable;
this.ControlBox = false;
this.Controls.Remove(label);
this.Controls.Add(textBox);
textBox.Text = label.Text;
}else{
this.FormBorderStyle = FormBorderStyle.None;
this.Controls.Remove(textBox);
this.Controls.Add(label);
label.Text = textBox.Text;
}
}
private void popClicked(Object sender, ToolStripItemClickedEventArgs e) {
if(e.ClickedItem.Name=="closeBtn") this.Close();
if(e.ClickedItem.Name=="newBtn") {
System.Diagnostics.Process.Start("sticky.exe", "");
}
}
private void setComponents(){
Font font = new Font("Meiryo UI", 10);
label = new Label(){
Dock = DockStyle.Fill,
Font = font,
BackColor = Color.Pink,
BorderStyle = BorderStyle.FixedSingle,
Parent=this,
};
label.DoubleClick += new EventHandler(DoubleClicked);
label.MouseDown += new MouseEventHandler(MouseDowned);
label.MouseMove += new MouseEventHandler(MouseMoved);
textBox = new TextBox(){
Dock = DockStyle.Fill,
Font = font,
BackColor = Color.Pink,
Multiline = true,
WordWrap = false,
};
textBox.DoubleClick += new EventHandler(DoubleClicked);
ToolStripMenuItem newItem = new ToolStripMenuItem(){
Text = "新規付箋紙",
Name = "newBtn",
};
ToolStripMenuItem closeItem = new ToolStripMenuItem(){
Text = "この付箋紙を捨てる",
Name = "closeBtn",
};
ContextMenuStrip pop = new ContextMenuStrip();
pop.Items.AddRange(new ToolStripItem[] {
newItem, new ToolStripSeparator(), closeItem
});
pop.ItemClicked += new ToolStripItemClickedEventHandler(popClicked);
this.ContextMenuStrip = pop;
}
//マウスのボタンが押されたとき
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]
スポンサーリンク









