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

C# 将3个文本框中的信息添加到锯齿状数组中以显示在列表框中,c#,C#,我正在尝试创建一个windows窗体,允许用户以字符名称、强度和灵巧度的形式将值输入到锯齿状数组中。一旦他们将这些值输入到文本框中,就必须将其保存,以便用户可以查看使用列表框输入的字符的信息 public Form1() { InitializeComponent(); String[][] Arr = new String[3][]; Arr[0] = new String[20]; Arr[1] = new St

我正在尝试创建一个windows窗体,允许用户以字符名称、强度和灵巧度的形式将值输入到锯齿状数组中。一旦他们将这些值输入到文本框中,就必须将其保存,以便用户可以查看使用列表框输入的字符的信息

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

    }

因此,我创建了字符串供用户输入3个属性的值。现在我不确定在哪里添加代码以及代码是什么。我是否应该在@David well指出的内容中加上一行,如Arr[0]=NameTxtbox.Text

,您最好的选择是了解一下winforms

以下是一些microsofts文档:

Textbox向TextChanged触发事件,您可以“侦听”这些事件以执行自己的代码:

不要使用多个值数组代替单个对象数组

考虑一个简单的对象:

public class Character
{
    public string Name { get; set; }
    public string Dexterity { get; set; }
    public string Strength { get; set; }
}
现在,如果希望表单维护角色对象列表,请在表单中创建类级属性:

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

因此,您没有试图维护单个值数组的复杂数组,而是拥有一个有意义对象的简单集合。您可以将其添加到相同的对象集合。

在“保存”按钮处理程序中添加此项

这一行:

字符串信息=textBox1.Text+-+textBox2.Text+-+textBox3.Text

将用户输入的所有字符串合并为一个字符串,并使用-表示间距

这条线呢

listBox1.Items.AddInfo

将字符串添加到列表框中

编辑:

这就是将它们存储在阵列中的方式


字符串[]数组=新[]{textBox1.Text,textBox2.Text,textBox3.Text}

您只是在问如何将单击处理程序分配给按钮吗?双击表单编辑器中的按钮。我想一些关于WinForms开发的简短教程在这里会有很大的帮助。还要注意的是,多个值数组不能很好地替代单个自定义对象数组。以下是说明:您可以在TextChanged event上添加事件侦听器我知道如何将单击处理程序分配给按钮,但我不确定的是如何将3个文本框中的信息保存到数组中,从名称的意义上讲,必须保存到Arr[0]那么第二个文本框中的强度必须保存到Arr[1]@JaceYatrakos:嗯,Arr[0]本身就是一个数组,所以你不能保存一个字符串。在您的怪异数据结构中,您希望将该值保存在何处?您是否打算将其保存到Arr[0][0]?如果您只是为数据创建一个自定义对象并维护该对象的数组或通用列表,这可能会容易得多。@David抱歉,我真的不确定您的意思,我仍在努力掌握C表单的诀窍,请原谅我。但是你的意思是我应该做的是使用Textbox.TextChanged行将文本框中的信息存储到单个数组中吗?所以我没有涉及对象创建,所以我将其拼凑在一起,所以让我确保我正确理解它:使用变量名称、灵巧度和强度创建对象角色,然后文本框中的值被存储到名称、灵巧度和强度中,然后每当我使用“保存”按钮保存角色时,它就会调用角色对象的一个新实例,以允许在列表中再次输入?@JaceYatrakos:这是一般的想法,是的。基本上,任何时候你有多个概念上描述一个事物的值,那么这个事物本身就是某种对象。这基本上是重构模式Replace Array With Object的一种变体:您会发现将值逻辑地分组到有意义的对象中要容易得多。赋予这些对象有意义的名称的改进语义使您的代码更易于阅读和维护。我是在公共窗体内部还是外部创建公共类角色。然后我把剩下的像角色一样放进去。在角色里面加上class@JaceYatrakos:我会在外面创建它,将它作为单独的关注点保留。随着逻辑的发展,这将成为您领域中的一个模型。您可能有自定义对象,如角色、武器、攻击类型或您正在构建的系统中的任何东西。理想情况下,域的大多数逻辑都属于模型,而表单的UI只调用该逻辑。拥有一个名为Models的文件夹并将您的自定义内容放在那里将是一个良好的开端。因此,当我尝试添加角色时,我会出错。添加是否应该这样写,Character.Addnew Character{Name=NameTxt.Text;Dexterity=DexTxt.Text;Strength=strText.Text;}也应该在Character类中添加它吗
private List<Character> Characters { get; set; } = new List<Character>();
Characters.Add(new Character
{
    Name = NameTxtbox.Text,
    Dexterity = DexterityTxtbox.Text,
    Strength = StrengthTxtbox.Text
});