Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据字符列表设置文本框的文本_C#_Winforms_Split - Fatal编程技术网

C# 根据字符列表设置文本框的文本

C# 根据字符列表设置文本框的文本,c#,winforms,split,C#,Winforms,Split,因此,我有以下表格: 我正在努力实现以下目标: 输入姓名后,我希望只需单击“姓名首字母”文本框即可生成姓名首字母 我找到了以下方法来获取字符串的第一个字符: string EngineerName = tb_Name.Text.ToString(); EngineerName.Split(' ').ToList().ForEach(i => Console.Write(i[0] + " ")); 我的问题是,如何将字符列表分配给文本框的文本 我试过: private void Tb_I

因此,我有以下表格:

我正在努力实现以下目标:

输入姓名后,我希望只需单击“姓名首字母”文本框即可生成姓名首字母

我找到了以下方法来获取字符串的第一个字符:

string EngineerName = tb_Name.Text.ToString();
EngineerName.Split(' ').ToList().ForEach(i => Console.Write(i[0] + " "));
我的问题是,如何将字符列表分配给
文本框的文本

我试过:

private void Tb_Initials_Click(object sender, EventArgs e)
        {
            string EngineerName = tb_Name.Text.ToString();
            EngineerName.Split(' ').ToList().ForEach(i => Console.Write(i[0] + " "));

            tb_Initials.Text = EngineerName;

        }

但这只是用完全相同的名称填充文本框…

您需要直接分配它:

string EngineerName = tb_Name.Text.ToString();
var initials = "";
EngineerName.Split(' ').ToList().ForEach(i => initials += i[0] + " ");
//trim the extra space in the end.
initials = initials.TrimEnd();
tb_Initials.Text = initials;

您需要将拆分结果分配到某个位置。考虑这个代码片段:

string EngineerName = tb_Name.Text.ToString();
string initials = "";
EngineerName.Split(' ').ToList().ForEach(i => initials += i[0] + " ");

tb_Initials.Text = initials;

您可以这样做:

private void Tb_Initials_Click(object sender, EventArgs e)
    {
        tb_Initials.Text = "";
        string EngineerName = tb_Name.Text;
        string[] splitted = EngineerName.Split(' ');
        for(int i = 0; i<splitted.Length; i++)
            tb_Initials.Text += splitted[i];

    }
private void Tb\u首字母\u单击(对象发送方,事件参数e)
{
tb_缩写。Text=“”;
字符串EngineerName=tb_Name.Text;
string[]splitted=EngineerName.Split(“”);

对于(int i=0;我给了我一个错误`无法将'void'转换为'string',将每个字母打印到控制台会有什么帮助?@KahnKah我已经修复了它。请注意,您最后还必须执行
initials.TrimEnd()
,否则它最后会有一个额外的空间。
tb_Name.Text.ToString()
-执行
ToString
对于已经是字符串的文本属性是多余的。
tb\u Initials.Text+=splitted[i]
-此逻辑似乎有问题。每次单击
tb_首字母
文本框时,此代码都不会清除以前的首字母。因此,例如,如果首先单击填充了
PB
,然后在下一次单击时,它将变为
PBMS
,此时它应该是
MS
,因此清除
tb_首字母的内容
Tb\u Initials\u Click
函数的开头需要文本框。@RBT true,忘记重置字符串,答案已更新。关于ToString,好吧……这是从他的代码中复制粘贴的:\
Tb\u Initials.text=”;
-这行代码给出了编译错误-
空字符文本