c# - 将来自 3 个文本框的信息添加到锯齿状数组中以显示在列表框中
问题描述
我试图创建一个 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 个属性的值。现在我不确定在哪里实际添加代码(以及代码是什么)。我应该放一行如 Arr[0] = NameTxtbox.Text
解决方案
不要使用多个值数组代替单个对象数组。
考虑一个简单的对象:
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>();
现在,每当您从输入中保存字符时(例如单击表单上的“保存”按钮时),您只需将其添加到列表中:
Characters.Add(new Character
{
Name = NameTxtbox.Text,
Dexterity = DexterityTxtbox.Text,
Strength = StrengthTxtbox.Text
});
因此,您不必尝试维护单个值数组的复杂数组,而是拥有一个有意义的对象的简单集合。您可以将您的对象绑定ListBox
到同一个对象集合。
推荐阅读
- laravel - ovh/ovh 需要 guzzlehttp^6.0 而 therobfonz/laravel-mandrill-driver 需要 guzzlehttp^7.0:有什么解决方案吗?
- html - 单击显示/隐藏子菜单
- docker-registry - 需要 Nexus OSS Docker 代理存储库身份验证
- python - Stripe Transfers:在没有适当费用的情况下创建传输以用作 source_transaction
- c - 我希望结果打印 ac[0] 但它给了我一个问号,如图所示。我能做些什么来纠正它?
- javascript - 提交带有加载数据的表单
- angular - 未收到来自跨模块订阅 observable 的事件
- c++ - 在 C++ Windows 中将图像文件从服务器发送到客户端
- r - 在 R 中的多个数据帧中查找每个单元格中的最大值
- javascript - 识别元素不存在 selenium webdriver javascript