C# - 数组 - 输入名称并显示它们

时间:2016-02-28 03:59:41

标签: c#

这是我的代码。

1。除了点击存储在数组中的显示名称按钮(输入名称后)后,显示文本框滚动条跳下并且必须将其拉出以查看已输入名。

2。此外,在我继续输入姓名后(在输入少数名字后),我获得了换行符(在显示名称文本框中),并且重复显示输入的名称。它应该在最后输入的名称后显示名称,而不重复先前输入的名称和换行符。

任何想法是什么造成的?

我的代码:

namespace Arrays
{
public partial class frmMain : Form
{


    public frmMain()
    {
        InitializeComponent();
    }


    //initialize the Array
    string[] names = new string[100];

    int index = 0;


    //Enter  Names up to 100 and store them in array
    private void btnEnterName_Click(object sender, EventArgs e)
    {
        if (index < names.Length)
        {
            names[index++] += txtName.Text;
            txtName.Clear();
        }
        else
        {
            // array 'full'
        }
    }

    //Display stored Names in Array using foreach loop in multiline textbox
    private void btnShowNames_Click(object sender, EventArgs e)
    {
        txtName.Clear();
        foreach (string item in names)
        {
            txtNames.AppendText(item + Environment.NewLine);
        }
    }

}
}

1 个答案:

答案 0 :(得分:0)

对于滚动条问题,设置Text而不是使用AppendText将解决问题:

//Display stored Names in Array using foreach loop in multiline textbox
private void btnShowNames_Click(object sender, EventArgs e)
{
    string allNames = "";
    foreach (string item in names)
    {
        allNames += item + Environment.NewLine;
    }
    txtNames.Text = allNames;

    // or more advanced
    //txtNames.Text = string.Join(names, Environment.NewLine);
}

如果您点击按钮而未在其中输入名称,则会发生换行符。在添加文本之前测试文本的存在:

//Enter  Names up to 100 and store them in array
private void btnEnterName_Click(object sender, EventArgs e)
{
    // remove spaces at start and end
    string trimedName = txtName.Trim();
    bool nameExist = !string.IsNullOrEmpty(trimedName);
    bool notHittingMaxName = index < names.Length;
    if (nameExist && notHittingMaxName)
    {
        names[index++] += trimedName;
        txtName.Clear();
    }
    else
    {
        // array 'full' or empty name
    }
}