private void Uc_Form2Main_MouseDown(object sender, MouseEventArgs e) { MainGui_Csharp shogibanGui = ((Form2_Console)this.ParentForm).Form1_Shogi.Uc_Form1Main.MainGui; if (null == shogibanGui.Shape_PnlTaikyoku) { goto gt_EndMethod; } // このメインパネルに、何かして欲しいという要求は、ここに入れられます。 shogibanGui.RepaintRequest = new RepaintRequestImpl(); if (e.Button == MouseButtons.Left) { //------------------------------------------------------------ // 左ボタン //------------------------------------------------------------ TimedB_MouseCapture timeB = ((TimedB_MouseCapture)shogibanGui.TimedB_MouseCapture); timeB.MouseEventQueue.Enqueue( new MouseEventState(shogibanGui.Scene, Shape_CanvasImpl.WINDOW_NAME_CONSOLE, MouseEventStateName.MouseLeftButtonDown, e.Location)); } else if (e.Button == MouseButtons.Right) { //------------------------------------------------------------ // 右ボタン //------------------------------------------------------------ TimedB_MouseCapture timeB = ((TimedB_MouseCapture)shogibanGui.TimedB_MouseCapture); timeB.MouseEventQueue.Enqueue( new MouseEventState(shogibanGui.Scene, Shape_CanvasImpl.WINDOW_NAME_CONSOLE, MouseEventStateName.MouseRightButtonDown, e.Location)); //------------------------------ // このメインパネルの反応 //------------------------------ shogibanGui.Response("MouseOperation"); } else { //------------------------------ // このメインパネルの反応 //------------------------------ shogibanGui.Response("MouseOperation"); } gt_EndMethod: ; }
public override void Step() { // 入っているマウス操作イベントは、全部捨てていきます。 SaiseiEventState[] queue = this.SaiseiEventQueue.ToArray(); this.SaiseiEventQueue.Clear(); foreach (SaiseiEventState eventState in queue) { switch (eventState.Name2) { case SaiseiEventStateName.Start: { //MessageBox.Show("再生を実行します2。"); mainGui.RepaintRequest = new RepaintRequestImpl(); this.restText = Util_Function_Csharp.ReadLine_FromTextbox(); this.SaiseiEventQueue.Enqueue(new SaiseiEventState(SaiseiEventStateName.Step)); } break; case SaiseiEventStateName.Step: { bool toBreak = false; if ("" == restText) { toBreak = true; } else { // [コマ送り]に成功している間、コマ送りし続けます。 Util_Functions_Server.ReadLine_TuginoItteSusumu_Srv( ref restText, this.mainGui.Link_Server.Model_Taikyoku, this.mainGui.Model_Manual, out toBreak, "再生ボタン" ); //TimedC.Saisei_Step(restText, shogiGui);// 再描画(ループが1回も実行されなかったとき用) // 他のアプリが固まらないようにします。 Application.DoEvents(); // 早すぎると描画されないので、ウェイトを入れます。 System.Threading.Thread.Sleep(90); //45 //------------------------------ // 再描画 //------------------------------ Util_Function_Csharp.Komaokuri_Gui(restText, mainGui); //追加 //------------------------------ // メナス //------------------------------ Util_Menace.Menace(mainGui); mainGui.Response("Saisei"); // 再描画 } if (toBreak) { // 終了 this.SaiseiEventQueue.Enqueue(new SaiseiEventState(SaiseiEventStateName.Finished)); } else { // 続行 this.SaiseiEventQueue.Enqueue(new SaiseiEventState(SaiseiEventStateName.Step)); } } break; } } }