| 重複起動を抑制する |
| static void Main() { // 重複起動を抑制 Mutex m = new Mutex(false, "Name"); if (m.WaitOne(0, false) == true) { // アプリケーションを起動 Application.Run(new Form1()); // Mutexを解放 m.ReleaseMutex(); } m.Close(); } |
| メインフォームへの参照を取得する |
| メインフォームとは別のクラスを作成し、メインフォームのオブジェクトへの参照を保存するstaticフィールドを作成する。 public class Share { public static Form1 m_MainForm; // Form1クラスへの参照 (以下省略) } Main関数を変更する。 static void Main() { // Form1クラスのオブジェクト作成 Form1 MainForm = new Form1(); // Form1オブジェクトへの参照を設定 Share.m_MainForm = MainForm // アプリケーションを起動 Application.Run(MainForm); } 他のクラスから参照する。 Share.m_MainForm.textBox1.Text = "abc"; |
| カーソル位置を設定する |
| Point p = new Point(1024, 768); Cursor.Position = p; |
| Internet Explorerでドキュメントを表示する |
| string sFileName = Application.StartupPath + "\\Readme.htm"; Process.Start("IExplore.exe", sFileName); |
| フォームにグラフィックを描画する |
| フォームのPaintイベントに記述する。 private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Pen p = new Pen(Color.Blue, 1); e.Graphics.DrawRectangle(p, 0, 0, 64, 64); } |
| フォーム上のコントロールを探す |
| TextBox textBox; foreach(Control ctrl in this.Controls) { if (ctrl is TextBox) { textBox = (TextBox)ctrl; // TabIndexがキーワード if (textBox.TabIndex == 0) { // 処理 } } } |
| 現在日時を文字列で取得する |
| Label1.Text = String.Format("{0:yyyy/MM/dd(ddd) HH:mm:ss}", DateTime.Now); |
| イベントを使用する |
| 一例としてイベントでメッセージを通知する。 まず、イベントを発生するクラスにイベントを定義する。 public class Class1 { // メッセージイベントのデリゲート public delegate void MessageEventHandler(object sender, MessageEventArgs e); // メッセージイベントのフィールド public event MessageEventHandler OnMessageEventHandler; /// <summary> /// メッセージイベント /// </summary> private void OnMessageEvent(MessageEventArgs e) { if (OnMessageEventHandler != null) { OnMessageEventHandler(this, e); } } イベントを発生させる。 // メッセージイベントデータクラス作成 MessageEventArgs MessageArgs = new MessageEventArgs("メッセージ"); // メッセージイベント OnMessageEvent(MessageArgs); イベントのパラメータとして、メッセージを渡すためのクラスを定義する。 /// <summary> /// メッセージイベントデータクラスの定義 /// </summary> public class MessageEventArgs : EventArgs { protected string m_sMessage = ""; /// <summary> /// メッセージイベントデータクラスのコンストラクタ /// </summary> public MessageEventArgs() { m_sMessage = ""; } public MessageEventArgs(string sMessage) { m_sMessage = sMessage; } /// <value>メッセージデータの取得と設定</value> public string sMessage { // メッセージデータの取得 get { return m_sMessage; } } メッセージを受けるクラスでインスタンスを作成し、イベントを登録する。 // オブジェクトを作成 Class1 class1 = new Class1(); // メッセージイベントを登録 class1.OnMessageEventHandler += new Class1.MessageEventHandler(OnMessage); /// <summary> /// メッセージイベント /// </summary> /// <param name="sender">イベントのソース</param> /// <param name="e">イベントデータを格納しているオブジェクト</param> private void OnMessage(object sender, MessageEventArgs e) { Label1.Text = e.sMessage; } |