强制String.Format“{0:P4}”显示+符号

时间:2016-05-09 03:02:41

标签: devexpress

我的数据库中有一个十进制列,其值存储为12.35 我们将其显示为12.35% 如果值为正数,则客户希望显示+ 12.35%(仅适用于此一个字段)。我如何让它显示+号。 我们将textedit格式化为getter String.Format中的P4(“{0:P4}”,值);

这是我尝试过的: 我能够通过使用Fomrat事件处理程序来完成此操作。我正在寻找一种更清洁的方式而不是下面的代码。

    private void txtMargin_FormatEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e)
    {
        if (e.Value != null)
        {
            if (e.Value.ToString().IndexOfAny(new char[] { '-', '+' }) < 0)
            {
                string val = e.Value.ToString();
                val = val.Replace("%", "");
                e.Value = string.Format("+{0}", (Convert.ToDouble(val) / 100).ToString("P4"));
                e.Handled = true;
            }
            else
            {
                string val = e.Value.ToString();
                val = val.Replace("%", "");
                e.Value = (Convert.ToDouble(val) / 100).ToString("P4");
            }
            e.Handled = true;
        }
    }

    private void txtMargin_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e)
    {
        if (e.Value != null)
        {
            if (e.Value.ToString().IndexOf('%') < 0)
            {
                e.Value = (Convert.ToDouble(e.Value.ToString()) / 100).ToString("P4");
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

在表单中加载以下代码:

 public Form1()
        {
            InitializeComponent();
        }

    private void Form1_Load(object sender, EventArgs e)
    {
        textEdit1.Properties.Mask.EditMask = "+#0.0000% ;-#0.0000%";
        textEdit1.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
        textEdit1.Properties.Mask.UseMaskAsDisplayFormat = false;

        textEdit1.Properties.EditFormat.FormatString = "+#0.0000% ;-#0.0000%";;
    }

And in you TextBox Handel the event "`CustomDisplayText`" as :

     private void textEdit1_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
            {
             if (e.Value != null && !e.Value.Equals (""))
            e.DisplayText = (Convert.ToDouble(e.Value.ToString()) / 100).ToString("+#0.0000 % ;-#0.0000 %");

             }