【问题标题】:Trying to Fill a text box with strings from other textboxes in C#尝试用 C# 中其他文本框的字符串填充文本框
【发布时间】:2015-01-16 02:16:22
【问题描述】:

我正在尝试创建一个简单的 AD Gui 以供我们的人力资源部门使用,但我对一些简单的事情很感兴趣。我们的电子邮件地址格式为 firstname.lastname@organization.org。我有一个名字和姓氏的文本框,我希望电子邮件的文本框自动填充 firstname.lastname@organization.org。我试过了

string FirstName = txtBoxFirstName.text;
string LastName = txtBoxLastName.text;    
txtBoxEmail.Text = FirstName + "." + LastName + "@organization.org";

我也尝试不将它们设置为字符串,但这也不起作用。我什至试图在“姓氏”文本框失去焦点后填充电子邮件文本框

private void txtBoxLastName_Leave(object sender, System.EventArgs e)
{
    txtBoxEmail.Text = txtBoxFirstName.text + "." + txtBoxLastName.text + "@organization.org";
}

我在 Visual Studio Express 2013 的 Windows 窗体应用程序中进行此操作

更多信息,我对此非常陌生。我在网上做了很多搜索,似乎没有什么能完全适合我的用例,以至于它已经修复了。回答一个问题,这里有一个更完整的代码sn-p:

private void txtBoxLastName_Leave(object sender, System.EventArgs e)
    {
        string FirstName = txtBoxFirstName.Text;
        string LastName = txtBoxLastName.Text;
        txtBoxEmail.Text = FirstName + "." + LastName + "@lgfcu.org";
    }

这表明它们在 txtBoxLastName_Leave 中。

【问题讨论】:

  • 那么,您所说的“没用”到底是什么意思?
  • 什么也没发生。该字段未填写。无论出于何种原因,这些字符串都不会传递给 txtBoxEmail。
  • 您确定函数正在触发吗?在分配了 txtBoxEmail.Text 的行上设置断点并确保它被命中。
  • 希望用户永远不会返回并编辑错字的名字
  • @Llama11amaduck 当然;在 WPF 中。 WinForms 有点难。您可以捕获“TextChanged”事件并即时进行修改。

标签: c# textbox fill autofill


【解决方案1】:

我将在黑暗中试一试,并假设您实际上并未将事件连接到 TextBox。创建事件的最简单方法:右键单击您的文本框,单击属性,选择顶部的“闪电符号”,找到您想要的事件(在本例中为“离开”)并双击“离开”右侧的列”。这将连接事件(在您的 Designer.cs 文件中查找 +=)并为您创建方法。

或者,如果您想手动连接事件,请添加此代码(在InitializeComponent() 之后):

txtBoxLastName.Leave += txtBoxLastName_Leave;

【讨论】:

  • 我会使用哪个文本框?如果我将其设为电子邮件文本框,则 firstname.lastname@organization.org 会填充到电子邮件中,但只有在我尝试在电子邮件字段中输入时(我已将其设置为只读,因此他们不会意外修改它)。如果我在“输入”电子邮件字段时将其设置为调用事件 LastName_Leave,那么当我单击电子邮件字段时,它会填充(正确),但如果我返回并更改名称,它不会更正电子邮件字段直到我重新点击它
  • 在您的示例中,您应该对 txtBoxLastName txtBoxFirstName 执行此操作。您之前所做的是创建一个方法 (txtBoxLastName_Leave) 但代码 e 不知道何时调用它。通过如上所述“连接”事件,代码知道在离开 TextBox 时调用它。
  • 还有一个名为“TextChanged”的事件可以用来代替“Leave”。
  • 太好了,谢谢!现在我明白了它是如何工作的。我没有意识到 TextBox_Leave 在没有其他事件调用的情况下没有被调用,愚蠢的错误。
【解决方案2】:

文本框的属性是标题大小写的,所以你需要大写第一个字母:

string FirstName = txtBoxFirstName.Text;
string LastName = txtBoxLastName.Text;

txtBoxEmail.Text = txtBoxFirstName.Text + "." + txtBoxLastName.Text + "@organization.org";

【讨论】:

  • 这会导致编译时错误。 OP 似乎不太可能遇到这种情况(尽管由于缺乏细节并非不可能)。
  • 尝试了 .text 和 .Text 都没有为我工作。你想要@BradleyDotNET 的更多细节吗?
  • @Llama11amaduck 知道当前的实际行为(即什么不起作用)会很棒。还有第一个代码示例的功能是什么。
【解决方案3】:

@MikeH 明白了;我搞砸了,没有调用我的函数来填充电子邮件字段。我的代码很好,

    private void populateEmail(object sender, System.EventArgs e)
    {
        string FirstName = txtBoxFirstName.Text;
        string LastName = txtBoxLastName.Text;
        txtBoxEmail.Text = FirstName + "." + LastName + "@organization.org";
    }

但我必须将它与一个事件联系起来。我将其设置为,当编辑 FirstName 或 LastName 中的文本时,它会填充电子邮件字段,从而防止在单击电子邮件框后有人返回名称字段进行修改时无法正确生成它的问题。

【讨论】:

    【解决方案4】:

    我们已经将字符串值和字符串值传递给TextBox

    String str = "Welcome";
    textBox.Text = str;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多