//(不要であれば削除すること)

        // P層フレームワークのイベント処理機能へ
        // コントロール イベントを追加するコード

        #region コントロールの検索、取得、イベントハンドラの設定処理

        /// <summary>イベント追加処理</summary>
        private void addControlEvent()
        {
            if (!this.IsInitializedEvent)
            {
                #region Formイベント

                // Formイベント
                this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_CMNEventHandler);

                // FormのKeyイベント
                this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_KeyDownEventHandler);
                this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_CMNEventHandler);

                this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_KeyPressEventHandler);
                this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_CMNEventHandler);

                this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form_KeyUpEventHandler);
                this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form_CMNEventHandler);

                #endregion

                #region Controlイベント

                // コントロール検索&イベントハンドラ設定
                RcMyCmnFunction.GetCtrlAndSetClickEventHandler2(this, this.MyCreatePrefixAndEvtHndHt(), this.ControlHt);

                #endregion
            }
        }
コード例 #2
0
        /// <summary>
        /// 未処理例外をキャッチするイベント・ハンドラ
        /// </summary>
        /// <remarks>
        /// メイン・スレッド以外の例外はUnhandledExceptionでハンドル
        /// </remarks>
        public static void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Exception ex = e.ExceptionObject as Exception;

            if (ex != null)
            {
                RcMyCmnFunction.ShowErrorMessageWin(ex, "Application_UnhandledExceptionによる例外通知です。");
            }
        }
コード例 #3
0
        //(不要であれば削除すること)

        // P層フレームワークのイベント処理機能へ
        // コントロール イベントを追加するコード

        #region コントロールの検索、取得、イベントハンドラの設定処理

        /// <summary>イベント追加処理</summary>
        private void addControlEvent()
        {
            #region Formイベント

            // Formイベント
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_CMNEventHandler);

            // FormのKeyイベント
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_KeyDownEventHandler);
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_CMNEventHandler);

            this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_KeyPressEventHandler);
            this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_CMNEventHandler);

            this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form_KeyUpEventHandler);
            this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form_CMNEventHandler);

            #endregion

            #region コントロール取得処理

            #region 旧処理
            //// CHECK BOX
            //RcMyCmnFunction.GetCtrlAndSetClickEventHandler(
            //    this, GetConfigParameter.GetConfigValue(MyLiteral.PREFIX_OF_CHECK_BOX),
            //    new System.EventHandler(this.Check_CheckedChanged), this.ControlHt);

            ////// TOOL STRIP MENU ITEM(再起でファインドできないので各画面で設定)
            ////RcMyCmnFunction.GetCtrlAndSetClickEventHandler(
            ////    this, GetConfigParameter.GetConfigValue("FxPrefixOfToolStripMenuItem"),
            ////    new System.EventHandler(this.Button_Click), this.ControlHt);
            #endregion

            // プレフィックス
            string prefix = "";
            // プレフィックスとイベント ハンドラのディクショナリを生成
            Dictionary <string, object> prefixAndEvtHndHt = new Dictionary <string, object>();

            // CHECK BOX
            prefix = GetConfigParameter.GetConfigValue(MyLiteral.PREFIX_OF_CHECK_BOX);
            if (!string.IsNullOrEmpty(prefix))
            {
                prefixAndEvtHndHt.Add(prefix, new System.EventHandler(this.Check_CheckedChanged));
            }

            // コントロール検索&イベントハンドラ設定
            RcMyCmnFunction.GetCtrlAndSetClickEventHandler2(this, prefixAndEvtHndHt, this.ControlHt);

            #endregion
        }
コード例 #4
0
        /// <summary>動的に追加したコントロールをLstUserControlに追加する</summary>
        /// <param name="sender">object</param>
        /// <param name="e">ControlEventArgs</param>
        private void groupBox_ControlAdded(object sender, ControlEventArgs e)
        {
            // UOC_イベントハンドラ内で追加/削除すると例外が発生するのでBeginInvokeで書く。
            this.BeginInvoke(
                (MethodInvoker <Control>)((x) =>
            {
                // UserControlの追加処理
                if (x is UserControl)
                {
                    // コントロール検索&イベントハンドラ設定(ルートから1回だけ行う)
                    RcFxCmnFunction.GetCtrlAndSetClickEventHandler2(
                        x, this.CreatePrefixAndEvtHndHt(), this.ControlHt);       // Base
                    RcMyCmnFunction.GetCtrlAndSetClickEventHandler2(
                        x, this.MyCreatePrefixAndEvtHndHt(), this.ControlHt);     // MyBase

                    // UserControlのLstUserControlへの追加(は再帰的に行う)
                    this.AddToLstUserControl(x);
                }
            }),
                new object[] { e.Control });
        }
コード例 #5
0
        //(不要であれば削除すること)

        // P層フレームワークのイベント処理機能へ
        // コントロール イベントを追加するコード

        #region コントロールの検索、取得、イベントハンドラの設定処理

        /// <summary>イベント追加処理</summary>
        private void addControlEvent()
        {
            #region Formイベント

            // Formイベント
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_CMNEventHandler);

            // FormのKeyイベント
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_KeyDownEventHandler);
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_CMNEventHandler);

            this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_KeyPressEventHandler);
            this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form_CMNEventHandler);

            this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form_KeyUpEventHandler);
            this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form_CMNEventHandler);

            #endregion

            #region コントロール取得処理

            #region 旧処理
            //// CHECK BOX
            //RcMyCmnFunction.GetCtrlAndSetClickEventHandler(
            //    this, GetConfigParameter.GetConfigValue(MyLiteral.PREFIX_OF_CHECK_BOX),
            //    new System.EventHandler(this.Check_CheckedChanged), this.ControlHt);

            ////// TOOL STRIP MENU ITEM(再起でファインドできないので各画面で設定)
            ////RcMyCmnFunction.GetCtrlAndSetClickEventHandler(
            ////    this, GetConfigParameter.GetConfigValue("FxPrefixOfToolStripMenuItem"),
            ////    new System.EventHandler(this.Button_Click), this.ControlHt);
            #endregion

            // コントロール検索&イベントハンドラ設定
            RcMyCmnFunction.GetCtrlAndSetClickEventHandler2(this, this.MyCreatePrefixAndEvtHndHt(), this.ControlHt);

            #endregion
        }
コード例 #6
0
        // .NET TIPS > 適切に処理されなかった例外をキャッチするには?
        // http://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception.html

        /// <summary>
        /// 未処理例外をキャッチするイベント・ハンドラ
        /// </summary>
        public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            RcMyCmnFunction.ShowErrorMessageWin(e.Exception, "Application_ThreadExceptionによる例外通知です。");
        }
コード例 #7
0
        /// <summary>参照処理</summary>
        /// <remarks>
        /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化
        /// (結果表示にだけ匿名デリゲードを使用するパターン)
        /// </remarks>
        private void button6_Click(object sender, RoutedEventArgs e)
        {
            // 非同期処理クラスを生成
            AsyncFunc af = new AsyncFunc(this);

            // 引数を纏める
            TestParameterValue testParameterValue = new TestParameterValue(
                this.Name, ((Button)sender).Name, "Select",
                ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                this.myUserInfo);

            // 情報の設定
            testParameterValue.ShipperID = int.Parse(this.textBox1.Text);

            // 引数を非同期処理クラスに設定
            af.Parameter = testParameterValue;

            // 画面上のデータは退避する(オブジェクトであれば、クローンする。)
            af.LogicalName = ((ComboBoxItem)this.ddlTransmission.SelectedItem).Value;

            // 非同期実行するメソッドを指定
            // ここは副スレッドから実行されるので注意。
            af.AsyncFunc = new BaseAsyncFunc.AsyncFuncDelegate(af.btn6_Exec);

            // 結果表示のメソッドを指定(匿名デリゲード)
            // このメソッドは必ず主スレッドで実行される。
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    RcMyCmnFunction.ShowErrorMessageWPF((Exception)retVal, "非同期処理で例外発生!");
                }
                else
                {
                    // 正常時

                    // 戻り値(キャスト)
                    TestReturnValue testReturnValue = (TestReturnValue)retVal;

                    // 結果表示するメッセージ エリア
                    this.labelMessage.Content = "";

                    if (testReturnValue.ErrorFlag == true)
                    {
                        // 結果(業務続行可能なエラー)
                        this.labelMessage.Content  = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                        this.labelMessage.Content += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                        this.labelMessage.Content += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
                    }
                    else
                    {
                        // 結果(正常系)
                        this.textBox1.Text = testReturnValue.ShipperID.ToString();
                        this.textBox2.Text = testReturnValue.CompanyName;
                        this.textBox3.Text = testReturnValue.Phone;
                    }
                }
            };

            // 非同期実行する。
            if (!af.StartByThreadPool())
            {
                MessageBox.Show("別の非同期処理が実行中です。");
            }
        }
コード例 #8
0
        /// <summary>件数取得</summary>
        /// <remarks>
        /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化
        /// (非同期実行、結果表示の双方に匿名デリゲードを使用するパターン)
        /// </remarks>
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            // 非同期処理クラスを生成
            // 匿名デリゲードの場合は、ベース2で良い。
            MyBaseAsyncFunc af = new MyBaseAsyncFunc(this);

            // 引数を纏め非同期処理クラスに設定
            af.Parameter = (object)new TestParameterValue(
                this.Name, ((Button)sender).Name, "SelectCount",
                ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                this.myUserInfo);

            // 画面上のデータは退避する
            //(オブジェクトであれば、クローンする。)
            string logicalName = ((ComboBoxItem)this.ddlTransmission.SelectedItem).Value;

            // 非同期実行するメソッドを指定(匿名デリゲード)
            // ここは副スレッドから実行されるので注意
            // (画面上のメンバに触らないこと!)。
            af.AsyncFunc = delegate(object param)
            {
                // 引数クラス(キャスト)
                TestParameterValue testParameterValue = (TestParameterValue)param;

                // 戻り値
                TestReturnValue testReturnValue;

                // 呼出し制御部品(スレッドセーフでないため副スレッド内で作る)
                CallController callCtrl = new CallController("");

                // Invoke
                testReturnValue = (TestReturnValue)callCtrl.Invoke(
                    logicalName, testParameterValue);

                //// 進捗表示のテスト
                //af.ChangeProgress = delegate(object o)
                //{
                //    MessageBox.Show(o.ToString());
                //};

                //af.ExecChangeProgress("進捗表示");

                //// 非同期メッセージボックス表示のテスト
                //MessageBoxResult mr = af.ShowAsyncMessageBoxWPF(
                //    "メッセージ", "タイトル", MessageBoxButton.YesNo, MessageBoxImage.Information);
                //// 非同期メッセージボックス表示のテスト(エラー)
                //System.Windows.Forms.DialogResult dr = af.ShowAsyncMessageBoxWin("メッセージ", "タイトル",
                //    System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Information);

                // 結果表示
                return(testReturnValue);
            };

            // 結果表示のメソッドを指定(匿名デリゲード)
            // このメソッドは必ず主スレッドで実行される。
            // (画面上のメンバを更新できる!)。
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    RcMyCmnFunction.ShowErrorMessageWPF((Exception)retVal, "非同期処理で例外発生!");
                }
                else
                {
                    // 正常時

                    // 戻り値(キャスト)
                    TestReturnValue testReturnValue = (TestReturnValue)retVal;

                    // 結果表示するメッセージ エリア
                    this.labelMessage.Content = "";

                    if (testReturnValue.ErrorFlag == true)
                    {
                        // 結果(業務続行可能なエラー)
                        this.labelMessage.Content  = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                        this.labelMessage.Content += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                        this.labelMessage.Content += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
                    }
                    else
                    {
                        // 結果(正常系)
                        this.labelMessage.Content = testReturnValue.Obj.ToString() + "件のデータがあります";
                    }
                }
            };

            // 非同期実行する。
            if (!af.StartByThreadPool())
            {
                MessageBox.Show("別の非同期処理が実行中です。");
            }
        }
コード例 #9
0
        /// <summary>件数取得</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>
        /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化
        /// (非同期実行、結果表示の双方に匿名デリゲードを使用するパターン)
        /// </remarks>
        protected void UOC_btnButton1_Click(RcFxEventArgs rcFxEventArgs)
        {
            // ↓カバレージ上げ

            //// Web認証情報
            //this.CallCtrl.NetworkCredentialToWAS
            //    = new NetworkCredential("test", "test", "test");

            //// プロキシ(認証)情報
            //this.CallCtrl.ProxyUrl = "http://xxx.xxx.xxx.xxx:8080";
            //this.CallCtrl.NetworkCredentialToProxy
            //    = new NetworkCredential("ptest", "ptest", "ptest");

            // 非同期処理クラスを生成
            // 匿名デリゲードの場合は、ベース2で良い。
            MyBaseAsyncFunc af = new MyBaseAsyncFunc(this);

            // 引数を纏める
            af.Parameter = (object)new TestParameterValue(
                this.Name, rcFxEventArgs.ControlName, "SelectCount",
                ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                MyBaseControllerWin.UserInfo);

            // 画面上のデータは退避する
            //(オブジェクトであれば、クローンする。)
            string logicalName = ((ComboBoxItem)this.ddlTransmission.SelectedItem).Value;

            // 非同期実行するメソッドを指定(匿名デリゲード)
            // ここは副スレッドから実行されるので注意
            // (画面上のメンバに触らないこと!)。
            af.AsyncFunc = delegate(object param)
            {
                // 引数クラス(キャスト)
                TestParameterValue testParameterValue = (TestParameterValue)param;

                // 戻り値
                TestReturnValue testReturnValue;

                // 呼出し制御部品(スレッドセーフでないため副スレッド内で作る)
                CallController callCtrl = new CallController(Program.AccessToken);

                // Invoke
                testReturnValue = (TestReturnValue)callCtrl.Invoke(
                    logicalName, testParameterValue);

                //// 進捗表示のテスト
                //af.ChangeProgress = delegate(object o)
                //{
                //    MessageBox.Show(o.ToString());
                //};

                //af.ExecChangeProgress("進捗表示");

                //// 非同期メッセージボックス表示のテスト
                //DialogResult dr = af.ShowAsyncMessageBoxWin(
                //    "メッセージ", "タイトル", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                ////// 非同期メッセージボックス表示のテスト(エラー)
                ////System.Windows.MessageBoxResult mr = af.ShowAsyncMessageBoxWPF("メッセージ", "タイトル",
                ////    System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxImage.Information);

                // 結果表示
                return(testReturnValue);
            };

            // 結果表示のメソッドを指定(匿名デリゲード)
            // このメソッドは必ず主スレッドで実行される。
            // (画面上のメンバを更新できる!)。
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    RcMyCmnFunction.ShowErrorMessageWin((Exception)retVal, "非同期処理で例外発生!");
                }
                else
                {
                    // 正常時

                    // 戻り値(キャスト)
                    TestReturnValue testReturnValue = (TestReturnValue)retVal;

                    // 結果表示するメッセージ エリア
                    this.labelMessage.Text = "";

                    if (testReturnValue.ErrorFlag == true)
                    {
                        // 結果(業務続行可能なエラー)
                        this.labelMessage.Text  = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                        this.labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                        this.labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
                    }
                    else
                    {
                        // 結果(正常系)
                        this.labelMessage.Text = testReturnValue.Obj.ToString() + "件のデータがあります";
                    }
                }
            };

            // 非同期実行する。
            if (!af.Start())
            {
                MessageBox.Show("別の非同期処理が実行中です。");
            }
        }
コード例 #10
0
ファイル: Form1.cs プロジェクト: shamohai/OpenTouryo
        /// <summary>参照処理</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>
        /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化
        /// (結果表示にだけ匿名デリゲードを使用するパターン)
        /// </remarks>
        protected void UOC_btnButton6_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 非同期処理クラスを生成
            AsyncFunc af = new AsyncFunc(this);

            af.LogicalName = ((ComboBoxItem)this.ddlTransmission.SelectedItem).Value;

            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                      this.Name, rcFxEventArgs.ControlName, "Select",
                      ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                      + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                      + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                      + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                      MyBaseControllerWin.UserInfo);

            // 情報の設定
            testParameterValue.ShipperID = int.Parse(this.textBox1.Text);

            // 引数を非同期処理クラスに設定
            af.Parameter = testParameterValue;

            // 非同期実行するメソッドを指定
            // ここは副スレッドから実行されるので注意。
            af.AsyncFunc = new BaseAsyncFunc.AsyncFuncDelegate(af.btn6_Exec);

            // 結果表示のメソッドを指定(匿名デリゲード)
            // このメソッドは必ず主スレッドで実行される。
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    RcMyCmnFunction.ShowErrorMessageWin((Exception)retVal, "非同期処理で例外発生!");
                }
                else
                {
                    // 正常時

                    // 戻り値(キャスト)
                    TestReturnValue testReturnValue = (TestReturnValue)retVal;
                    // 結果表示するメッセージ エリア
                    this.labelMessage.Text = "";

                    if (testReturnValue.ErrorFlag == true)
                    {
                        // 結果(業務続行可能なエラー)
                        this.labelMessage.Text  = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                        this.labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                        this.labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
                    }
                    else
                    {
                        // 結果(正常系)
                        this.textBox1.Text = testReturnValue.ShipperID.ToString();
                        this.textBox2.Text = testReturnValue.CompanyName;
                        this.textBox3.Text = testReturnValue.Phone;
                    }
                }
            };

            // 非同期実行する。
            if (!af.Start())
            {
                MessageBox.Show("別の非同期処理が実行中です。");
            }
        }