예제 #1
0
        /// <summary>クローンの作製</summary>
        /// <returns>クローン</returns>
        public override object Clone()
        {
            // base.Cloneの後に、
            WinCustomTextBoxDgvCol col =
                (WinCustomTextBoxDgvCol)base.Clone();

            // 追加したプロパティをコピー
            // チェック系は不要、編集系を設定
            col.MaxLength = this.MaxLength;

            col.IsNumeric        = this.IsNumeric;
            col.EditInitialValue = this.EditInitialValue;
            //col.EditAddFigure = this.EditAddFigure;
            col.EditPadding = this.EditPadding;
            //col.EditDigitsAfterDP = this.EditDigitsAfterDP;
            col.EditDigitsAfterDP_Editing = this.EditDigitsAfterDP_Editing;

            //col.DisplayUnits = this.DisplayUnits;

            return(col);
        }
예제 #2
0
        ///// <summary>DataGridViewTextBoxCell.InitializeEditingControl経由のset_Textを無視するための関数</summary>
        //private void _83B12F0F_CEA3_4f93_9233_B86EFA149BB2(
        //    int rowIndex, object initialFormattedValue,
        //    DataGridViewCellStyle dataGridViewCellStyle)
        //{
        //    // ベースへ
        //    base.InitializeEditingControl(rowIndex,
        //        initialFormattedValue, dataGridViewCellStyle);
        //}

        /// <summary>編集コントロールを初期化</summary>
        /// <param name="rowIndex">行</param>
        /// <param name="initialFormattedValue">フォーマットバリュー</param>
        /// <param name="dataGridViewCellStyle">セル スタイル</param>
        public override void InitializeEditingControl(
            int rowIndex, object initialFormattedValue,
            DataGridViewCellStyle dataGridViewCellStyle)
        {
            //// DataGridViewTextBoxCell.InitializeEditingControlを呼び出す。
            //this._83B12F0F_CEA3_4f93_9233_B86EFA149BB2(
            //    rowIndex, initialFormattedValue, dataGridViewCellStyle);

            // ベースへ
            base.InitializeEditingControl(rowIndex,
                                          initialFormattedValue, dataGridViewCellStyle);

            // 編集コントロールであるWinCustomTextBoxDgvHostの取得
            WinCustomTextBoxDgvHost winCustomTextBoxDgvHost =
                this.DataGridView.EditingControl as WinCustomTextBoxDgvHost;

            // 編集コントロールであるWinCustomTextBoxDgvHostが取得できた場合
            if (winCustomTextBoxDgvHost != null)
            {
                // カスタム列のプロパティを反映させる
                WinCustomTextBoxDgvCol column =
                    this.OwningColumn as WinCustomTextBoxDgvCol;

                // プロパティの移植
                if (column != null)
                {
                    // 追加したプロパティをコピー
                    // チェック系は不要、編集系を設定
                    winCustomTextBoxDgvHost.MaxLength = column.MaxLength;

                    winCustomTextBoxDgvHost.IsNumeric        = column.IsNumeric;
                    winCustomTextBoxDgvHost.EditInitialValue = column.EditInitialValue;
                    //winCustomTextBoxDgvHost.EditAddFigure = column.EditAddFigure;
                    winCustomTextBoxDgvHost.EditPadding = column.EditPadding;
                    //winCustomTextBoxDgvHost.EditDigitsAfterDP = column.EditDigitsAfterDP;
                    winCustomTextBoxDgvHost.EditDigitsAfterDP_Editing = column.EditDigitsAfterDP_Editing;
                    //winCustomTextBoxDgvHost.DisplayUnits = column.DisplayUnits;
                }

                //try
                //{

                // Textを設定(3項演算)
                //System.Diagnostics.Debug.WriteLine("InitializeEditingControl");
                //System.Diagnostics.Debug.WriteLine("・this.RowIndex:" + this.RowIndex.ToString());

                // DataGridView で DateTimePicker をホストすると ArgumentOutOfException が発生する
                //http://social.msdn.microsoft.com/Forums/ja-JP/7079fb1c-d171-44f8-81b1-751f3fe1ba6f/datagridview-datetimepicker-argumentoutofexception-

                //winCustomTextBoxDgvHost.Text =
                //    this.Value == null ? "" : this.Value.ToString();

                winCustomTextBoxDgvHost.Text =
                    this.GetValue(rowIndex) == null ? "" : this.GetValue(rowIndex).ToString();

                //}
                //catch (ArgumentOutOfRangeException aoorEx)
                //{
                //    // この例外は潰す。
                //}

                //// バインド先を変更
                //if (winCustomTextBoxDgvHost.DisplayUnits == null)
                //{
                //    // Textを設定(3項演算)
                //    winCustomTextBoxDgvHost.Text =
                //        this.Value == null ? "" : this.Value.ToString();
                //}
                //else
                //{
                //    // Valueを設定
                //    winCustomTextBoxDgvHost.Value = this.Value;
                //}
            }
        }
예제 #3
0
파일: Form1.cs 프로젝트: krt/OpenTouryo
        /// <summary>ロード</summary>
        private void Form1_Load(object sender, EventArgs e)
        {
            // ハンドラ
            this.winCustomTextBox8.ValueChanged += new EventHandler(winCustomTextBox8_ValueChanged);

            ////////////////////////////////////////////////////////////////////////////////////////////////////
            // コンボ初期化
            ////////////////////////////////////////////////////////////////////////////////////////////////////

            // Webサービスでマスタをロード
            ArrayList al = null;
            CmnMasterDatasForList.ClearMasterData();

            al = new ArrayList();
            al.Add(new ListItem("1", "aaa"));
            al.Add(new ListItem("2", "bbb"));
            al.Add(new ListItem("3", "ccc"));
            CmnMasterDatasForList.SetMasterData("Test1", al);

            al = new ArrayList();
            al.Add(new ListItem("1", "AAA"));
            al.Add(new ListItem("2", "BBB"));
            al.Add(new ListItem("3", "CCC"));
            CmnMasterDatasForList.SetMasterData("Test2", al);

            al = new ArrayList();
            al.Add(new ListItem("1", "あ"));
            al.Add(new ListItem("2", "い"));
            al.Add(new ListItem("3", "う"));
            CmnMasterDatasForList.SetMasterData("Test3", al);

            //// InitItemsで初期化
            //this.winCustomDropDownList1.InitItems();
            //this.winCustomDropDownList2.InitItems();
            //this.winCustomDropDownList3.InitItems();

            // InitDataSourceで初期化
            this.winCustomDropDownList1.InitDataSource();
            this.winCustomDropDownList2.InitDataSource();
            this.winCustomDropDownList3.InitDataSource();

            ////////////////////////////////////////////////////////////////////////////////////////////////////
            // データバインディングをテストする。
            ////////////////////////////////////////////////////////////////////////////////////////////////////

            // DataBindingsのFormatString(桁区切り)はdecimalで無いと効かない。
            // また、DataBindingsでは初期設定時のTextのReEditも効かない。
            // 従って、DataBindings時の方式としてはdecimal&FormatStringに寄せる必要がある。

            ////////////////////////////////////////////////////////////////////////////////////////////////////
            // 単項目の入力コントロールとのデータバインディングをテストする。
            ////////////////////////////////////////////////////////////////////////////////////////////////////

            DataView dv = null;
            this.Dt = this.CreateDataTable();

            // FormatStringとは相性が悪いので併用NGとした。

            // 設定なし
            dv = new DataView(this.Dt, "id = 1", "", DataViewRowState.Unchanged);
            this.winCustomTextBox1.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, "hogehoge");//, "#,##0.########");

            // 桁区切り3
            dv = new DataView(this.Dt, "id = 2", "", DataViewRowState.Unchanged);
            this.winCustomTextBox2.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            // 桁区切り4
            dv = new DataView(this.Dt, "id = 3", "", DataViewRowState.Unchanged);
            this.winCustomTextBox3.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            // 小数点以下2, 6
            dv = new DataView(this.Dt, "id = 4", "", DataViewRowState.Unchanged);
            this.winCustomTextBox4.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            // 小数点以下4, 8
            dv = new DataView(this.Dt, "id = 5", "", DataViewRowState.Unchanged);
            this.winCustomTextBox5.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            // パッド
            dv = new DataView(this.Dt, "id = 6", "", DataViewRowState.Unchanged);
            this.winCustomTextBox6.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            // パッド
            dv = new DataView(this.Dt, "id = 7", "", DataViewRowState.Unchanged);
            this.winCustomTextBox7.DataBindings.Add("Text", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            //---

            this.BindingSource1 = new BindingSource();
            this.BindingSource1.DataSource = new Bean(88888888, DateTime.Now, "88888888");

            // 複合(桁区切り3+小数点以下2、6+単位変換100万→10^6乗)
            //dv = new DataView(this.Dt, "id = 8", "", DataViewRowState.Unchanged);
            //this.winCustomTextBox8.DataBindings.Add("Value", dv, "aaa", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");
            this.winCustomTextBox8.DataBindings.Add("Value", this.BindingSource1, "AAA", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");

            // Textはdatetime、Text2はstringとのバインディングもテスト(日付)
            //dv = new DataView(this.Dt, "id = 1", "", DataViewRowState.Unchanged);
            //this.winCustomTextBox8.DataBindings.Add("Text2", dv, "bbb", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "#,##0.########");
            this.winCustomMaskedTextBox9.DataBindings.Add("Text2", this.BindingSource1, "BBB", true, DataSourceUpdateMode.OnPropertyChanged, null);//, "yyyy/MM/dd");
            
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            // データグリッドとのデータバインディングをテストする。
            ////////////////////////////////////////////////////////////////////////////////////////////////////

            //////////////////////////////////////////////////
            // WinCustomTextBoxの場合
            //////////////////////////////////////////////////
            // WinCustomTextBoxDgvColを作成
            WinCustomTextBoxDgvCol nomalColumn = new WinCustomTextBoxDgvCol();

            nomalColumn.MaxLength = 15;
            nomalColumn.IsNumeric = true;

            // EditInitialValue
            //nomalColumn.EditInitialValue = EditInitialValue.Zero;

            // 編集中、小数点以下(Editingのみ実装)
            nomalColumn.EditDigitsAfterDP_Editing= new EditDigitsAfterDP(CutMethod.Ceiling, 6);

            // パッド
            //nomalColumn.EditPadding = new EditPadding(PadDirection.Right, '0');
            //nomalColumn.EditPadding = new EditPadding(PadDirection.Left, '0');

            // 桁区切り(FormatStringで対応)
            // DisplayUnits(処理で対応)

            nomalColumn.DataPropertyName = "aaa";
            nomalColumn.HeaderText = "aaa";

            // FormatString(編集後、カンマ区切りで小数点2桁)
            nomalColumn.DefaultCellStyle.Format = "#,##0.##";
            
            this.dataGridView1.Columns.Add(nomalColumn);

            //////////////////////////////////////////////////
            // WinCustomMaskedTextBoxの場合
            //////////////////////////////////////////////////

            // WinCustomMaskedTextBoxDgvColを作成
            WinCustomMaskedTextBoxDgvCol maskedColumn =
                new WinCustomMaskedTextBoxDgvCol();
            maskedColumn.DataPropertyName = "bbb";
            maskedColumn.HeaderText = "bbb";

            // Maskと、Mask_Editingを逆にすると上手くいかない。
            // 初期表示時と、編集後で、セル(バインド先)のFormatが変わってしまうため。
            
            maskedColumn.EditInitialValue = EditInitialValue.Blank;

            maskedColumn.Mask = "9999/99/99";
            maskedColumn.Mask_Editing = "9999年99月99日";

            maskedColumn.EditToHankaku = true;
            maskedColumn.EditToYYYYMMDD = true;

            // FormatString(編集後、カンマ区切りで小数点2桁)
            maskedColumn.DefaultCellStyle.Format = "yyyy/MM/dd";
            
            this.dataGridView1.Columns.Add(maskedColumn);

            //////////////////////////////////////////////////
            // WinCustomDropDownListの場合
            //////////////////////////////////////////////////

            // WinCustomDropDownListDgvColを作成
            DataGridViewComboBoxColumn comboColumn =
                new DataGridViewComboBoxColumn();
            comboColumn.DataPropertyName = "ccc";
            comboColumn.HeaderText = "ccc";
            comboColumn.DataSource = CmnMasterDatasForList.GetMasterData("Test1"); // ↓どちらでも良い
            //MasterDatasForList.GetMasterData("Test1", comboColumn.Items); // ↑どちらでも良い
            comboColumn.ValueMember = "ID"; // 必須
            comboColumn.DisplayMember = "Name"; // 必須
            this.dataGridView1.Columns.Add(comboColumn);

            // ---

            // また、DataBindingsでは初期設定時のTextのReEditも効かない。
            // 従って、DataBindings時の方式としてはdecimal&FormatStringに寄せる必要がある。
            this.dataGridView1.DataSource = this.CreateDataTable();
            this.dataGridView1.Columns["id"].Visible = false;
            this.dataGridView1.Columns["ddd"].Visible = false; // 変更通知を発生させる用途の列。
        }