c#在失去焦点时将文本框格式化为货币

标签 c# winforms

我在表单上有几个文本框列表,每个文本框代表数据库的一列。每次用户退出其中一个价格框时,我都想更新表格。这个列表的名称是 priceBox[]。我知道 lostFocus 事件,但我似乎无法想出一种方法让它为一个集合工作,而且这个列表可以增长,所以我不能有一个固定的数字。我还没有任何代码。如果有帮助,文本框控件包含在名为 panel1 的面板中。

我试过搜索,但找不到任何关于此的内容。仅适用于单个实例,例如更新 1 个文本框。

抱歉,如果这是重复的,但我确实尝试过搜索。我也是 c# 的新手。

谢谢。

最佳答案

一种方法是向面板添加 ControlAdded 处理程序,因此每次添加新文本框时,它都会自动为其添加 LostFocus 处理程序。下面一步一步:

为您的面板绑定(bind)一个处理程序 ControlAdded 事件,它类似于:

private void Panel1_ControlAdded(object sender, ControlEventArgs e)
{
    var tb = e.Control as TextBox;
    if (tb != null)
    {
        tb.LostFocus += new EventHandler(TextBox_LostFocus);
    }
}

然后在 TextBox_LostFocus 中你可以添加任何你想要的逻辑

void TextBox_LostFocus(object sender, EventArgs e)
{
    var tb = sender as TextBox;
    if (tb != null)
    {
        // modify tb.Text here, possibly like this...
        tb.Text = String.Format("{0:C}", Decimal.Parse(tb.Text));
    }
}

更新所有现有控件(未测试)

foreach (TextBox in panel1.Controls)
{
    tb.LostFocus += new EventHandler(TextBox_LostFocus);
}

关于c#在失去焦点时将文本框格式化为货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225702/

相关文章:

asp.net - aspNet兼容性 WCF 和 WinForm

c# - 在 C# 的父窗体中心显示一个子窗体

c# - 从线程访问和更改 winform webbrowser

c# - 在 C# 中使用 maskedtextctrl 作为 IP 地址

c# - 掷骰子游戏

c# - 使用 PHP 和 MVC 将 XML 文件上传到 Web 目录

c# - WPF - 检测转换器中的设计模式

c# - c# - 如何从与C#中的System不同的命名空间获取类型?

c# - 同时选择不同 TreeView 中的2个节点

c# - 无法验证 UseJwtBearerAuthentication 中的 token 。授权被拒绝