Mono メモ2017年12月20日 | |
はじめにMono による C#/GUI プログラミングのメモ。 セットアップUbuntu 16.04 でのセットアップ。ここ を参考にする。 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF $ echo "deb http://download.mono-project.com/repo/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/mono-official.list $ sudo apt-get update $ sudo apt-get install mono-devel $ sudo apt-get install monodevelop MonoDevelop の起動。 $ monodevelop 起動すれば OK。 ウインドウウインドウを表示する。MonoDevelop を起動する。メニュー [ファイル]-[新規]-[ソリューション...] で [その他]-[.NET]-[空のプロジェクト] を選ぶ。[プロジェクト名] を "window" にする。[位置] でディレクトリの作成位置を指定。[作成] を押すと、指定位置に "window" というディレクトリができる。 ツリーには「ソリューション」に「プロジェクト」が1つある状態になっている。プロジェクトのアイコン (ツリーの子のほう) を右クリックして [追加]-[新しいファイル] で [空のクラス] を選び、"Program" という名前で [作成] を押す。 プログラムを以下のように書き換える。
using System;
namespace window
{
public class Program
{
[STAThread]
private static void Main(string[] args)
{
}
}
}
プロジェクトのアイコンを右クリックし [windows をビルド] を選ぶ (あるいは F7 を押す)。エラーが出なければ OK。 同様にして "Window" というクラスを追加。 ツリーの "参照" を右クリックし、[参照アセンブリの編集] を選択。"System"、"System.Windows.Forms" にチェックを入れて [OK]。 また、プロジェクトのアイコン右クリックし [オプション] を選び、[ビルド]-[一般] の [コード生成]-[コンパイルのターゲット] を "GUI実行可能ファイル" に変更する (こうしないと Windows で起動したときにコマンドプロンプトが表示される)。 コードを以下のようにする。 Window.cs
using System;
using System.Windows.Forms;
namespace window
{
public class Window : Form
{
public Window ()
{
}
}
}
Programs.cs
using System;
using System.Windows.Forms;
namespace window
{
public class Program
{
[STAThread]
private static void Main(string[] args)
{
Application.Run(new Window());
}
}
}
実行 (F5) してウインドウが表示されれば OK。 タイトルの設定、サイズの指定this.Text = "Window"; this.Width = 640; this.Height = 480; ウインドウを画面中央に表示this.StartPosition = FormStartPosition.CenterScreen; マウスマウスイベントを扱う。 新規で "mouse" ソリューションを作成。プロジェクトに "window" の 2 つのファイルを追加する (Copy を選ぶ)。namespace を "mouse" に変更する。 ツリーの "参照" を右クリックし、[参照アセンブリの編集] を選択。"System"、"System.Windows.Forms"、"System.Drawing" にチェックを入れる。 Window.cs
using System;
using System.Windows.Forms;
using System.Drawing;
namespace mouse
{
public class Window : Form
{
Label label1;
Label label2;
Label label3;
public Window ()
{
this.Text = "mouse";
this.Width = 640;
this.Height = 480;
this.StartPosition = FormStartPosition.CenterScreen;
this.label1 = new Label ();
this.label1.Parent = this;
this.label1.Location = new Point(0, 0);
this.label1.AutoSize = true;
this.label1.Text = "Point:";
this.label2 = new Label ();
this.label2.Parent = this;
this.label2.Location = new Point(0, 15);
this.label2.AutoSize = true;
this.label2.Text = "Button:";
this.label3 = new Label ();
this.label3.Parent = this;
this.label3.Location = new Point(0, 30);
this.label3.AutoSize = true;
this.label3.Text = "Wheel:";
this.MouseMove += new MouseEventHandler(this.mouseMove);
this.MouseDown += new MouseEventHandler(this.mouseDown);
this.MouseUp += new MouseEventHandler(this.mouseUp);
this.MouseWheel += new MouseEventHandler(this.mouseWheel);
}
void mouseMove(object sender, MouseEventArgs e) {
this.label1.Text = String.Format("Point: ({0}, {1})", e.X, e.Y);
this.label3.Text = "Wheel:";
}
void mouseDown(object sender, MouseEventArgs e) {
string eventString = null;
switch (e.Button) {
case MouseButtons.Left:
eventString = "Left";
break;
case MouseButtons.Right:
eventString = "Right";
break;
case MouseButtons.Middle:
eventString = "Middle";
break;
case MouseButtons.None:
default:
break;
}
this.label2.Text = "Button: " + eventString;
this.label3.Text = "Wheel:";
}
void mouseUp(object sender, MouseEventArgs e) {
this.label2.Text = "Button:";
}
void mouseWheel(object sender, MouseEventArgs e) {
this.label3.Text = String.Format ("Wheel: {0}", e.Delta);
}
}
}
マウスイベントに対してメソッドを登録して、ラベルに情報を表示している。 | |
| PENGUINITIS | |