我可以将变量名称列表添加到 C# 中的组合框吗
can I add a list of variable names to a combobox in C#
我有一长串数组,我想制作一个下拉框来查看所有数组的名称。我不想预先在下拉框中输入名称,我想避免动态输入名称的多行。
例如,
int[] Brett = { 24, 64, 83 };
int[] Tony = { 32, 78, 27 };
组合框下拉列表将显示 Brett 和 Tony
我是编程新手,所以如果有一个基本的解决方案,我会理解我会更喜欢它而不是高级的方法。感谢您的帮助!
我很确定你有 XY-problem, but nameof()
是你本地问题的答案:
ComboBox mybox = new ComboBox();
mybox.Items.Add(nameof(Brett));
mybox.Items.Add(nameof(Tony));
让我们尝试解决您的问题。我认为使用长变量列表不是一个好主意,所以更好的方法是使用 类 列表或像这样的字典:
var parameters = new Dictionary<string, int[]>();
parameters.Add("Brett", new [] { 24, 64, 83 });
parameters.Add("Tony", new [] { 32, 78, 27 });
它将帮助您更轻松地添加项目:
foreach(var kvp in parameters)
mybox.Items.Add(kvp.Key);
类 的替代方案在下面的代码中:
public class PersonParams
{
public string Name { get; }
public int[] Params { get; }
public PersonParams(string name, params int [] p)
{
Name = name;
Params = p;
}
}
...
var persons = new List<PersonParams>();
persons.Add(new PersonParams("Brett", 24, 64, 83));
persons.Add(new PersonParams("Tony", 32, 78, 27));
...
foreach(var p in persons)
mybox.Items.Add(p.Name);
我有一长串数组,我想制作一个下拉框来查看所有数组的名称。我不想预先在下拉框中输入名称,我想避免动态输入名称的多行。
例如,
int[] Brett = { 24, 64, 83 };
int[] Tony = { 32, 78, 27 };
组合框下拉列表将显示 Brett 和 Tony
我是编程新手,所以如果有一个基本的解决方案,我会理解我会更喜欢它而不是高级的方法。感谢您的帮助!
我很确定你有 XY-problem, but nameof()
是你本地问题的答案:
ComboBox mybox = new ComboBox();
mybox.Items.Add(nameof(Brett));
mybox.Items.Add(nameof(Tony));
让我们尝试解决您的问题。我认为使用长变量列表不是一个好主意,所以更好的方法是使用 类 列表或像这样的字典:
var parameters = new Dictionary<string, int[]>();
parameters.Add("Brett", new [] { 24, 64, 83 });
parameters.Add("Tony", new [] { 32, 78, 27 });
它将帮助您更轻松地添加项目:
foreach(var kvp in parameters)
mybox.Items.Add(kvp.Key);
类 的替代方案在下面的代码中:
public class PersonParams
{
public string Name { get; }
public int[] Params { get; }
public PersonParams(string name, params int [] p)
{
Name = name;
Params = p;
}
}
...
var persons = new List<PersonParams>();
persons.Add(new PersonParams("Brett", 24, 64, 83));
persons.Add(new PersonParams("Tony", 32, 78, 27));
...
foreach(var p in persons)
mybox.Items.Add(p.Name);