用户键入时,columnGridView 中的千位分隔符和逗号

Posted

技术标签:

【中文标题】用户键入时,columnGridView 中的千位分隔符和逗号【英文标题】:Thousand Separator with comma in columnGridView when the user is typing 【发布时间】:2016-12-05 15:59:10 【问题描述】:

我要用逗号分隔数字, 我要找的就是这样的

Comma Separator in c#

但该问题的解决方案对我不起作用,因为我在 gridview 的列中而不是在文本框中执行此操作。

到目前为止我所做的(gridview 中列类的一部分):

public override string Text

    get  
    set  base.Text = GetFormattedText(value); 


protected override void OnTextChanged(System.EventArgs e)

    base.OnTextChanged(e);
    Text = GetFormattedText(Text);


protected virtual string GetFormattedText(string text)

    string strText = text.Replace(",", "");
    decimal decValue = System.Convert.ToDecimal(strText);
    strText = decValue.ToString("#,##0");
    return strText;

那么这段代码会发生什么:

当我在列中输入 12345 时,它变为 ---> 51,234

如果我的说法不清楚,请告诉我,我会进一步解释

【问题讨论】:

尝试在Text setter 中base.Text=GetFormattedText(value); 之后添加base.SelectionStart = base.Text.Length; 你为什么在属性的setter和event方法的override中使用你的方法? @juharr 是的,代码有点奇怪,因为首先它甚至无法编译...也许如果 OP 发布真实代码我们可以提供帮助。 @sariiia 很高兴它有帮助。我不确定那是问题,但我猜它是。我已将其添加为答案:) @juharr 谢谢你的回答,我只是想表明它是为 gridview 的列实现的一个大类的一部分,所以我所有的列都表现为这个类中的函数,(我可以在这个论坛上简单地写一下,但我认为这可能有助于帮助帮助者知道我有一个充满列函数的类),再次感谢你 【参考方案1】:

问题是当您更改文本框文本时,插入符号会转到TextBox 的第一个位置。所以在设置TextBox文本与格式化文本后,必须添加这一行才能走到最后:

base.SelectionStart = base.Text.Length; 

【讨论】:

我还有一个与此相关的问题,如果您能看一下我的问题,我将不胜感激,这有点奇怪,或者我的知识很少,所以当我想要的时候,我觉得很奇怪填充datagridview,例如我的datagridview有3列,名称,计数,费用,当我直接进入费用列时,它就像一个魅力,我的意思是当我正确输入时是单独的数字,但是当我第一次去计数时列然后收费,它不起作用,(我应该说在第二种情况下它只是调用我的财产的获取)我该怎么办,谢谢朋友 我在这里解释过了,***.com/questions/41115117/…真的谢谢你的帮助

以上是关于用户键入时,columnGridView 中的千位分隔符和逗号的主要内容,如果未能解决你的问题,请参考以下文章

带有剃刀 MVC 和 js 的千位分隔符

Python中的千位分隔符[重复]

C++中的千位分隔符

sql SQL SERVVER中的千位分隔符

删除逗号,它是 R 中的千位分隔符

如何显示或隐藏数字中的千位分隔符