C# 如何为多个文本框只保留一次事件编写代码

C# 如何为多个文本框只保留一次事件编写代码,c#,.net,winforms,C#,.net,Winforms,我在textboxLeave event上使用此代码,将textbox的第一个字母改为大写字母,在表单上,我有一些特定的文本框,我想为它们完成相同的功能,但有没有办法不需要在每个textbox Leave event中编写相同的代码,我该怎么做 private void txtAdrs2A_Leave(object sender, EventArgs e) { if (txtAdrs2A.Text.Length >= 1) txtAdrs2A.Text = txtA

我在textbox
Leave event
上使用此代码,将textbox的
第一个字母
改为
大写字母
,在表单上,我有一些特定的文本框,我想为它们完成相同的功能,但有没有办法不需要在每个textbox Leave event中编写相同的代码,我该怎么做

private void txtAdrs2A_Leave(object sender, EventArgs e)
{
    if (txtAdrs2A.Text.Length >= 1)
        txtAdrs2A.Text = txtAdrs2A.Text.Substring(0, 1).ToUpper() + txtAdrs2A.Text.Substring(1);
}

使用
sender
参数,而不是通过其
Id
指定
TextBox

private void TextBox_Leave(object sender, EventArgs e)
{
    var box = sender as TextBox;

    if(box != null && box.Text.Length > 0)
        box.Text = box.Text.Substring(0, 1).ToUpper() + box.Text.Substring(1);
}

使用
sender

    private void text_Leave(object sender, EventArgs e)
    {
        TextBox text = (TextBox)sender;
        if (text.Text.Length >= 1)
        {
            text.Text = text.Text.Substring(0, 1).ToUpper() + text.Text.Substring(1
        }
    }
然后遍历所有文本框,将事件分配给它们

    foreach (TextBox t in this.Controls.OfType<TextBox>())
    {
        t.Leave += new EventHandler(text_Leave);
    }
foreach(this.Controls.OfType()中的文本框t)
{
t、 Leave+=新事件处理程序(text_Leave);
}

但是我如何将其用于其他文本框,因为这也是在Leave event中编写的。您可以对多个元素使用与事件处理程序相同的方法。使用“属性”窗口执行此操作-不要创建新的方法,而是从下拉列表中选择您的方法。我没有找到,我可以从textbox的哪个属性中选择此方法?因为在事件中,我找不到此列表单击窗口顶部的
事件
图标,您将找到可用事件的列表。列表中应该有
Leave
。是的,这是一个很好的解决方案,我学到了一些新东西,谢谢:)