/// <summary>Equals</summary>
        /// <param name="edadp">EditDigitsAfterDP</param>
        /// <returns>
        /// true:等しい
        /// false:等しくない
        /// </returns>
        /// <remarks>全メンバの==のAND</remarks>
        public bool Equals(EditDigitsAfterDP edadp)
        {
            // null対応
            if (edadp == null)
            {
                return(false);
            }

            return
                ((this.HowToCut == edadp.HowToCut) &&
                 (this.DigitsAfterDP == edadp.DigitsAfterDP));
        }
Example #2
0
        /// <summary>
        /// ConvertTo(プロパティグリッド表示値への変換)を実行する。
        /// </summary>
        /// <param name="context">コンテキスト</param>
        /// <param name="culture">カルチャと</param>
        /// <param name="value">EditDigitsAfterDPオブジェクト</param>
        /// <param name="destinationType">変換後の型</param>
        /// <returns>文字列</returns>
        public override object ConvertTo(
            ITypeDescriptorContext context, CultureInfo culture,
            object value, Type destinationType)
        {
            // 型をチェック
            if (destinationType == typeof(string))
            {
                // 文字列へ変換
                if (value is EditDigitsAfterDP)
                {
                    EditDigitsAfterDP edadp = (EditDigitsAfterDP)value;
                    return(edadp.HowToCut.ToString() + " : " + edadp.DigitsAfterDP.ToString());
                }
            }

            // 上記以外の場合、ベースへ。
            return(base.ConvertTo(context, culture, value, destinationType));
        }
Example #3
0
        /// <summary>
        /// ConvertFrom(プロパティグリッドからの変換)を実行する。
        /// </summary>
        /// <param name="context">コンテキスト</param>
        /// <param name="culture">カルチャ</param>
        /// <param name="value">文字列</param>
        /// <returns>EditDigitsAfterDPオブジェクト</returns>
        public override object ConvertFrom(
            ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            // 文字列型の場合
            if (value is string)
            {
                string[] s = value.ToString().Split(':');

                EditDigitsAfterDP edadp = new EditDigitsAfterDP();

                string howToCut = s[0].Trim();
                if (howToCut == CutMethod.Banker.ToString())
                {
                    edadp.HowToCut = CutMethod.Banker;
                }
                else if (howToCut == CutMethod._4sya5nyu.ToString())
                {
                    edadp.HowToCut = CutMethod._4sya5nyu;
                }
                else if (howToCut == CutMethod.Ceiling.ToString())
                {
                    edadp.HowToCut = CutMethod.Floor;
                }
                else
                {
                    edadp.HowToCut = CutMethod.Ceiling;
                }

                if (s.Length <= 1 || s[1].Trim() == "")
                {
                    edadp.DigitsAfterDP = 0;
                }
                else
                {
                    edadp.DigitsAfterDP = uint.Parse(s[1].Trim());
                }

                return(edadp);
            }

            // 上記以外の場合、ベースへ。
            return(base.ConvertFrom(context, culture, value));
        }
Example #4
0
        /// <summary>Equals</summary>
        /// <param name="edadp">EditDigitsAfterDP</param>
        /// <returns>
        /// true:等しい
        /// false:等しくない
        /// </returns>
        /// <remarks>全メンバの==のAND</remarks>
        public bool Equals(EditDigitsAfterDP edadp)
        {
            // null対応
            if (edadp == null) { return false; }

            return
                (this.HowToCut == edadp.HowToCut)
                && (this.DigitsAfterDP == edadp.DigitsAfterDP);
        }
Example #5
0
        /// <summary>小数点以下x桁の0を削除</summary>
        /// <param name="txt">入力文字列</param>
        /// <param name="edad">小数点以下切り捨て指定</param>
        /// <returns>編集後の文字列</returns>
        private string DeleteZeroAfterDP(string txt, EditDigitsAfterDP edad)
        {
            if ((edad != null && (edad.HowToCut.HasValue && edad.HowToCut.Value != CutMethod.None))
                && txt != "" && StringChecker.IsHankaku(txt) && StringChecker.IsNumeric(txt))
            {
                // 小数点以下切り捨て指定有り(の数値入力)の場合で、
                // 整数部が入力されている場合。

                // 余分な「0」を削る。
                if (txt.IndexOf('.') == -1)
                {
                    // 小数点無し。
                }
                else
                {
                    // 小数点有り。

                    // 後ろから0を削っていく(.も対象となる)。
                    int i = txt.Length - 1;

                    if (i == -1)
                    {
                        // 空文字列
                    }
                    else
                    {
                        for (; txt[i] == '0' || txt[i] == '.'; i--)
                        {
                            if (i <= 0)
                            {
                                // ・・・
                                break;
                            }
                            else
                            {
                                // 削る
                                if (txt[i] == '0')
                                {
                                    txt = txt.Substring(0, i);
                                    continue; // '0'は継続
                                }
                                else if (txt[i] == '.')
                                {
                                    txt = txt.Substring(0, i);
                                    break; // '.'で停止
                                }
                                else
                                {
                                    // ここは通らない。
                                }
                            }
                        }
                    }
                }
            }

            return txt;
        }
Example #6
0
        /// <summary>後ろに小数点以下x桁を付与</summary>
        /// <param name="txt">入力文字列</param>
        /// <param name="edad">小数点以下切り捨て指定</param>
        /// <returns>編集後の文字列</returns>
        private string AddZeroAfterDP(string txt, EditDigitsAfterDP edad)
        {
            if ((edad != null && edad.DigitsAfterDP != 0 && 
                (edad.HowToCut.HasValue && edad.HowToCut.Value != CutMethod.None))
                && txt != "" && StringChecker.IsHankaku(txt) && StringChecker.IsNumeric(txt))
            {
                // 小数点以下切り捨て指定有り(の数値入力)の場合で、
                // 整数部が入力されている場合。

                // 少数部が入力されている・いない。
                int IndexOfDP = txt.IndexOf('.');

                if (IndexOfDP == -1)
                {
                    // DP無しの場合、

                    // MaxLength(最低2文字(.0)の空きが必須
                    if (txt.Length + 2 <= this.MaxLength)
                    {
                        // DP付与は可能
                        txt += ".";

                        for (int i = 0; i < edad.DigitsAfterDP; i++)
                        {
                            // MaxLengthに達していたら、forをbreak
                            if (this.MaxLength <= txt.Length) { break; }

                            // 以降、桁数分0追加
                            txt += "0";
                        }
                    }
                    else
                    {
                        // DP付与も不可
                    }
                }
                else
                {
                    // DP有りの場合、
                    for (int i = txt.Length - (IndexOfDP + 1); i < (int)edad.DigitsAfterDP; i++) // 条件間違っていた(修正済み)。
                    {
                        // MaxLengthに達していたら、forをbreak
                        if (this.MaxLength <= txt.Length) { break; }

                        // 以降、桁数分0追加
                        txt += "0";
                    }
                }

            }

            return txt;
        }
        /// <summary>
        /// ConvertFrom(プロパティグリッドからの変換)を実行する。
        /// </summary>
        /// <param name="context">コンテキスト</param>
        /// <param name="culture">カルチャ</param>
        /// <param name="value">文字列</param>
        /// <returns>EditDigitsAfterDPオブジェクト</returns>
        public override object ConvertFrom(
            ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            // 文字列型の場合
            if (value is string)
            {
                string[] s = value.ToString().Split(':');

                EditDigitsAfterDP edadp = new EditDigitsAfterDP();

                string howToCut = s[0].Trim();
                if (howToCut == CutMethod.Banker.ToString())
                {
                    edadp.HowToCut = CutMethod.Banker;
                }
                else if (howToCut == CutMethod._4sya5nyu.ToString())
                {
                    edadp.HowToCut = CutMethod._4sya5nyu;
                }
                else if (howToCut == CutMethod.Ceiling.ToString())
                {
                    edadp.HowToCut = CutMethod.Floor;
                }
                else
                {
                    edadp.HowToCut = CutMethod.Ceiling;
                }

                if (s.Length <= 1 || s[1].Trim() == "")
                {
                    edadp.DigitsAfterDP = 0;
                }
                else
                {
                    edadp.DigitsAfterDP = uint.Parse(s[1].Trim());
                }

                return edadp;
            }

            // 上記以外の場合、ベースへ。
            return base.ConvertFrom(context, culture, value);
        }