将文本框值添加到数组并将其显示在列表框中。单击按钮时刷新数组
Add textbox value to array and show this in listbox. Refresh the array when button clicked
于是我运行陷入了下面的问题。我有一个文本框和列表框。我做了一个这样的数组:
string[] Brands = new string[10];
Brands[0] = "Yamaha";
Brands[1] = "Suzuki";
Brands[2] = "Harley";
Brands[3] = "Kawasaki";
数组有 10 个值,但我只指定了四个值。我想通过单击按钮将最多十个值添加到此数组中。
我不能使用列表,它必须是数组。我已经发现我需要将上面的部分放在
{
public partial class Form1 : Form
{
string[] Brands = new string[10];
Brands[0] = "Yamaha";
Brands[1] = "Suzuki";
Brands[2] = "Harley";
Brands[3] = "Kawasaki";
但它不识别品牌[]。
private void buttonAddbrand_Click(object sender, EventArgs e)
{
需要包含将其添加到数组中的代码。喜欢刷新数组。
我卡住了,互联网上的信息太多了,每个人都建议一个列表,但我需要使用一个数组。将不胜感激。
您不能像这样分配数组:
public partial class Form1 : Form
{
string[] Brands = new string[10];
Brands[0] = "Yamaha"; //fail
Brands[1] = "Suzuki"; //fail
Brands[2] = "Harley"; //fail
Brands[3] = "Kawasaki"; //fail
在 class 上下文中。相反,你应该做这样的事情
public partial class Form1 : Form
{
string[] Brands = new string[10] { "Yamaha", "Suzuki", "Harley", "Kawasaki", "", "", "", "", "", "" };
然后,如果您将 Brands
声明为 Form1
class
字段,那么在
private void buttonAddbrand_Click(object sender, EventArgs e)
{
//Brands will be recognized
}
品牌将得到认可。如果您需要做的是向数组添加一些东西(并且您必须使用数组)。那么你还应该像这样保留当前数组中元素的数量:
public partial class Form1 : Form
{
string[] Brands = new string[10] { "Yamaha", "Suzuki", "Harley", "Kawasaki", "", "", "", "", "", "" };
int brandNo = 4;
然后,当你向数组中添加新项时,按如下方式进行:
private void buttonAddbrand_Click(object sender, EventArgs e)
{
if(brandNo >= 10)
return; //cannot add more brand
Brands[brandNo++] = "NewBrand"; //at the brandNo AFTER you put "NewBrand", see post-increment.
}
编辑:
至于构造函数中的数组初始化,这就是你的老师想要的-实际上是更长的方法。不过为了教学方便,还是先展示一下吧:
public partial class Form1 : Form
{
string[] Brands = new string[10];
int brandNo; //This is a must
public Form1(){
InitializeComponent();
Brands[0] = "Yamaha"; //ok
Brands[1] = "Suzuki"; //ok
Brands[2] = "Harley"; //ok
Brands[3] = "Kawasaki"; //ok
brandNo = 4; //This is a must
}
Ian 的回答很好,这意味着你检查是否有 space 并让你知道 space 在哪里。
另一种方法是不使用数组,而是使用列表。
有了列表,您可以执行以下操作:
List<string> Brands = new List<string> { "Yamaha", "Suzuki", "Harley", "Kawasaki" };
然后在你的添加中你可以简单地做:
private void buttonAddbrand_Click(object sender, EventArgs e)
{
if(Brands.Count >= 10)
return; //cannot add more brand
Brands.Add("NewBrand");
}
我相信(如果我错了,请有人纠正我)List 的内存开销稍大,但我个人更喜欢在可能的情况下使用它们而不是数组。
Ian 的 answare 你肯定可以用这种方式初始化它,为什么不呢?
string[] Brands = new string[10];
Brands[0] = "Yamaha";
Brands[1] = "Suzuki";
Brands[2] = "Harley";
Brands[3] = "Kawasaki";
也是这样
string[] Brands = new string[10] { "Yamaha", "Suzuki", "Harley", "Kawasaki" };
回到你的问题为什么不创建你自己的 class 随心所欲
public class Brands
{
#region private
private int _maxCapacity { get; set; }
private readonly List<string> _brands = new List<string>();
#endregion
#region Constructor
public Brands(int maxCapacity)
{
_maxCapacity = maxCapacity;
}
#endregion
#region public
// return all as array
public string[] AsArray
{
get { return _brands.ToArray(); }
}
/// <summary>
/// recive the actual count
/// </summary>
public int Count
{
get { return _brands.Count; }
}
/// <summary>
/// give item from position
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public string Get(int item)
{
return _brands.Count <= item ? _brands[item] : string.Empty;
}
/// <summary>
/// Set(Add) a value if enougth capacity
/// </summary>
/// <param name="value"></param>
public void Set(string value)
{
if (_brands.Count < _maxCapacity)
_brands.Add(value);
else
{
throw new ArgumentOutOfRangeException("Capacity");
}
}
/// <summary>
/// change an item
/// </summary>
/// <param name="item"></param>
/// <param name="value"></param>
public void Set(int item, string value)
{
if (_brands.Count <= item)
_brands[item] = value;
}
#endregion
}
// 我没有编译它,但这是我的想法
所以在你的表格中你只需使用它
希望对您有所帮助
此致
于是我运行陷入了下面的问题。我有一个文本框和列表框。我做了一个这样的数组:
string[] Brands = new string[10];
Brands[0] = "Yamaha";
Brands[1] = "Suzuki";
Brands[2] = "Harley";
Brands[3] = "Kawasaki";
数组有 10 个值,但我只指定了四个值。我想通过单击按钮将最多十个值添加到此数组中。
我不能使用列表,它必须是数组。我已经发现我需要将上面的部分放在
{
public partial class Form1 : Form
{
string[] Brands = new string[10];
Brands[0] = "Yamaha";
Brands[1] = "Suzuki";
Brands[2] = "Harley";
Brands[3] = "Kawasaki";
但它不识别品牌[]。
private void buttonAddbrand_Click(object sender, EventArgs e)
{
需要包含将其添加到数组中的代码。喜欢刷新数组。
我卡住了,互联网上的信息太多了,每个人都建议一个列表,但我需要使用一个数组。将不胜感激。
您不能像这样分配数组:
public partial class Form1 : Form
{
string[] Brands = new string[10];
Brands[0] = "Yamaha"; //fail
Brands[1] = "Suzuki"; //fail
Brands[2] = "Harley"; //fail
Brands[3] = "Kawasaki"; //fail
在 class 上下文中。相反,你应该做这样的事情
public partial class Form1 : Form
{
string[] Brands = new string[10] { "Yamaha", "Suzuki", "Harley", "Kawasaki", "", "", "", "", "", "" };
然后,如果您将 Brands
声明为 Form1
class
字段,那么在
private void buttonAddbrand_Click(object sender, EventArgs e)
{
//Brands will be recognized
}
品牌将得到认可。如果您需要做的是向数组添加一些东西(并且您必须使用数组)。那么你还应该像这样保留当前数组中元素的数量:
public partial class Form1 : Form
{
string[] Brands = new string[10] { "Yamaha", "Suzuki", "Harley", "Kawasaki", "", "", "", "", "", "" };
int brandNo = 4;
然后,当你向数组中添加新项时,按如下方式进行:
private void buttonAddbrand_Click(object sender, EventArgs e)
{
if(brandNo >= 10)
return; //cannot add more brand
Brands[brandNo++] = "NewBrand"; //at the brandNo AFTER you put "NewBrand", see post-increment.
}
编辑:
至于构造函数中的数组初始化,这就是你的老师想要的-实际上是更长的方法。不过为了教学方便,还是先展示一下吧:
public partial class Form1 : Form
{
string[] Brands = new string[10];
int brandNo; //This is a must
public Form1(){
InitializeComponent();
Brands[0] = "Yamaha"; //ok
Brands[1] = "Suzuki"; //ok
Brands[2] = "Harley"; //ok
Brands[3] = "Kawasaki"; //ok
brandNo = 4; //This is a must
}
Ian 的回答很好,这意味着你检查是否有 space 并让你知道 space 在哪里。
另一种方法是不使用数组,而是使用列表。
有了列表,您可以执行以下操作:
List<string> Brands = new List<string> { "Yamaha", "Suzuki", "Harley", "Kawasaki" };
然后在你的添加中你可以简单地做:
private void buttonAddbrand_Click(object sender, EventArgs e)
{
if(Brands.Count >= 10)
return; //cannot add more brand
Brands.Add("NewBrand");
}
我相信(如果我错了,请有人纠正我)List 的内存开销稍大,但我个人更喜欢在可能的情况下使用它们而不是数组。
Ian 的 answare 你肯定可以用这种方式初始化它,为什么不呢?
string[] Brands = new string[10];
Brands[0] = "Yamaha";
Brands[1] = "Suzuki";
Brands[2] = "Harley";
Brands[3] = "Kawasaki";
也是这样
string[] Brands = new string[10] { "Yamaha", "Suzuki", "Harley", "Kawasaki" };
回到你的问题为什么不创建你自己的 class 随心所欲
public class Brands
{
#region private
private int _maxCapacity { get; set; }
private readonly List<string> _brands = new List<string>();
#endregion
#region Constructor
public Brands(int maxCapacity)
{
_maxCapacity = maxCapacity;
}
#endregion
#region public
// return all as array
public string[] AsArray
{
get { return _brands.ToArray(); }
}
/// <summary>
/// recive the actual count
/// </summary>
public int Count
{
get { return _brands.Count; }
}
/// <summary>
/// give item from position
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public string Get(int item)
{
return _brands.Count <= item ? _brands[item] : string.Empty;
}
/// <summary>
/// Set(Add) a value if enougth capacity
/// </summary>
/// <param name="value"></param>
public void Set(string value)
{
if (_brands.Count < _maxCapacity)
_brands.Add(value);
else
{
throw new ArgumentOutOfRangeException("Capacity");
}
}
/// <summary>
/// change an item
/// </summary>
/// <param name="item"></param>
/// <param name="value"></param>
public void Set(int item, string value)
{
if (_brands.Count <= item)
_brands[item] = value;
}
#endregion
}
// 我没有编译它,但这是我的想法 所以在你的表格中你只需使用它 希望对您有所帮助
此致