//──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> public UsercontrolCheckbox() { // ヌル・アクセス防止のため this.customcontrolCheckbox1 = new CustomcontrolCheckbox(); this.memoryButton1 = new MemoryButtonImpl(); InitializeComponent(); }
//──────────────────────────────────────── #endregion #region イベントハンドラー //──────────────────────────────────────── /// <summary> /// チェックが変更されたというイベント・ハンドラー。 /// /// このイベント・ハンドラーは、HCheckBoxに必ず登録されます。 /// </summary> /// <param nFcName="sender"></param> /// <param nFcName="e"></param> private void this_CheckChanged(object sender, EventArgs e) { Log_Method pg_Method = new Log_MethodImpl(0); Log_Reports log_Reports_ThisMethod = new Log_ReportsImpl(pg_Method); pg_Method.BeginMethod(Info_Controls.Name_Library, this, "this_CheckChanged", log_Reports_ThisMethod); // // //bug:Expression_Name_Controlがnull→コンストラクタでダミーを入れた string sName_Usercontrol = this.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports_ThisMethod); log_Reports_ThisMethod.Comment_EventCreationMe = "[" + sName_Usercontrol + "]コントロール(チェックボックス)のチェックが変更されました。"; CustomcontrolCheckbox ccCheckBox = (CustomcontrolCheckbox)sender; if (this.ControlCommon.BAutomaticinputting) { // コンピューターにより自動入力されたとき。 //essageBox.Show("コンピュータによって自動入力されました。 コントロールID=[" + this.FormObjectId + "]", "▲デバッグ"); } else { // 手入力による更新。 //essageBox.Show( //"ユーザーによって直接入力されました。hNumericUpDown=[" + hNumericUpDown + "] コントロールID=["+this.FormObjectId+"]", //"▲デバッグ(" + Info_Forms .LibraryName+ ")"+this.GetType().NFcName+"#this_CheckChanged:"); this.UsercontrolToMemory( log_Reports_ThisMethod ); } // // pg_Method.EndMethod(log_Reports_ThisMethod); log_Reports_ThisMethod.EndLogging(pg_Method); }
//──────────────────────────────────────── /// <summary> /// データ・ターゲットへの出力を行います。 /// /// イベント・ハンドラー以外でも、直接、データターゲットへの出力を行うことができます。 /// </summary> public void UsercontrolToMemory( Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); pg_Method.BeginMethod(Info_Controls.Name_Library, this, "UsercontrolToMemory(10)", log_Reports); // // if (null == this.ControlCommon.Expression_Control) { // このコントロールに対応づくテーブル等の設定がなく、ただの空箱の場合。 // Visual Studio のビジュアルエディターで直接置いただけの時は、ここに来ます。 // 何もせず終了。 goto gt_EndMethod; } List <Expression_Node_String> ecList_Data = this.ControlCommon.Expression_Control.SelectDirectchildByNodename(NamesNode.S_DATA, false, EnumHitcount.Unconstraint, log_Reports); List <Expression_Node_String> ecList_DataTarget = Utility_Expression_NodeImpl.SelectItemsByPmAsCsv(ecList_Data, PmNames.S_ACCESS.Name_Pm, ValuesAttr.S_TO, false, EnumHitcount.First_Exist, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } Expression_Node_String ec_DataTarget = ecList_DataTarget[0]; if (null == ec_DataTarget) { // エラー: データターゲットが未設定のとき goto gt_Error_NullDatatarget; } else { // データターゲットが設定されているとき CustomcontrolCheckbox ccCheckBox = this;//イベントハンドラーのsender引数と一致すること。 // TODO 数値型テキストボックスで空白を出力しようとしたときにエラーになるのはバグなので修正したい。 // 特にトリムは行いません。 switch (this.enumCheckboxValuetype) { case EnumCheckboxValuetype.Bool: { ToMemory_Performer nDataTargetUpdater = new ExpressionDataTargetUpdaterImpl(); nDataTargetUpdater.ToMemory( ccCheckBox.Checked.ToString(), this.ControlCommon.Expression_Control, this.ControlCommon.Owner_MemoryApplication, log_Reports ); } break; case EnumCheckboxValuetype.Zero_One: { int nCheckedInt; if (ccCheckBox.Checked) { nCheckedInt = 1; } else { nCheckedInt = 0; } ToMemory_Performer nDataTargetUpdater = new ExpressionDataTargetUpdaterImpl(); nDataTargetUpdater.ToMemory( nCheckedInt.ToString(), this.ControlCommon.Expression_Control, this.ControlCommon.Owner_MemoryApplication, log_Reports ); } break; default: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, this.enumCheckboxValuetype.ToString(), log_Reports); //未定義のEnum値。 this.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:506;", tmpl, log_Reports); } break; } if (log_Reports.Successful) { // 成功時 ccCheckBox.BackColor = System.Drawing.SystemColors.Window; } else { // 設定失敗時。 ccCheckBox.BackColor = Color.Yellow; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullDatatarget: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, this.Name, log_Reports);//コントロール名 this.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:502;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(log_Reports); }