将3个文本框中的信息添加到锯齿状数组中以显示在列表框中

时间:2018-05-03 19:03:29

标签: c#

The Form layout

我试图创建一个窗体,允许用户以字符Name,Strength和Dexterity的形式将值输入到锯齿状数组中。一旦他们将这些值输入文本框,就必须保存它,以便用户可以查看使用列表框输入的字符的信息

    public Form1()
    {
        InitializeComponent();
        String[][] Arr = new String[3][];
        Arr[0] = new String[20];
        Arr[1] = new String[20];
        Arr[2] = new String[20];

    }

所以我已经为用户创建了字符串,以输入3个属性的值。现在我不确定在哪里实际添加代码(以及代码是什么)。我应该放一行如Arr [0] = NameTxtbox.Text

3 个答案:

答案 0 :(得分:1)

不要使用多个值数组作为单个对象数组的替代。

考虑一个简单的对象:

public class Character
{
    public string Name { get; set; }
    public string Dexterity { get; set; }
    public string Strength { get; set; }
}

现在,如果您希望表单维护Character个对象的列表,那么在表单中创建一个类级属性:

private List<Character> Characters { get; set; } = new List<Character>();

现在,无论何时从输入中保存字符(例如单击表格中的&#34; save&#34;按钮),只需将其添加到列表中:

Characters.Add(new Character
{
    Name = NameTxtbox.Text,
    Dexterity = DexterityTxtbox.Text,
    Strength = StrengthTxtbox.Text
});

因此,您可以使用简单的有意义对象集合,而不是尝试维护单个值的复杂数组。您可以bind your ListBox到相同的对象集合。

答案 1 :(得分:0)

正如@David指出,你最好的选择是学习一下winforms。

以下是一些microsofts文档:https://msdn.microsoft.com/en-us/library/system.windows.forms.textbox(v=vs.110).aspx

“文本框”会将事件触发到TextChanged,您可以“听取”这些事件。要执行您自己的代码:https://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged(v=vs.110).aspx

textBox = new TextBox()
textBox.TextChanged += () => {
   // your code here.
   var input = textBox.Text;
   Arr[1] = input.ToCharArray();
}

答案 2 :(得分:0)

在保存按钮处理程序内添加此

这一行:

string Info = textBox1.Text + " - " + textBox2.Text + " - " + textBox3.Text;

将用户输入的所有字符串Concat一个字符串-作为间距。

这一行

listBox1.Items.Add(Info);

将字符串添加到列表框中。

编辑:

这是将它们存储在数组中的方式。

string[] array = new[]{textBox1.Text , textBox2.Text , textBox3.Text};