【问题标题】:Thousand Separator with comma in columnGridView when the user is typing用户键入时,columnGridView 中的千位分隔符和逗号
【发布时间】: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 的列实现的一个大类的一部分,所以我所有的列都表现为这个类中的函数,(我可以在这个论坛上简单地写一下,但我认为这可能有助于帮助帮助者知道我有一个充满列函数的类),再次感谢你

标签: c# winforms gridview comma


【解决方案1】:

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

base.SelectionStart = base.Text.Length; 

【讨论】:

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