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]
スポンサーリンク