c#可变长度字符串数组
本文关键字:字符串 数组 | 更新日期: 2023-09-27 18:17:41
基于comboBox1的选择,我填充comboBox2。comboBox2具有可变数量的列表项。目前我是这样手动做的:
string[] str1 = { "item1", "item2" }
string[] str2 = { "item1", "item2", "item3" , "item4" }
等。
if (cbox1.SelectedIndex == 0)
{
cbox2.Items.AddRange(str1);
}
if (cbox1.SelectedIndex == 1)
{
cbox2.Items.AddRange(str2);
}
等。
虽然这工作,我有4个下拉框和13个可能的选择每个事件。这就产生了很多"如果"。我更愿意使用字符串数组来实现这一点,这样我就可以摆脱所有的if,并为每个SelectedIndexChanged执行以下操作:
cbox2.Items.AddRange(str[cbox1.SelectedIndex]);
,但我不确定我是否可以做到这一点与字符串的可变长度。当执行
时,我得到错误string[,] str = { { "Item1", "Item2"},{"Item1", "Item2", "Item3", "Item4"} };
有办法做到这一点吗?
谢谢!
您已经发现在这种情况下不能使用多维数组,因为数组的长度不同。但是,您可以使用锯齿数组来代替:
string[][] str =
{
new string[] { "Item1", "Item2" },
new string[] { "Item1", "Item2", "Item3", "Item4" }
};
您可以使用Dictionary并将您的SelectedIndex值映射到字符串数组(甚至更好,IEnumerable<string>
):
IDictionary<int, string[]> values = new Dictionary<int, string[]>
{
{0, new[] {"item1", "item2"}},
{1, new[] {"item3", "item4", "item5"}},
};
...
string[] items = values[1];
您也可以使用字典来实现您的目标:
Dictionary<int, string[]> itemChoices = new Dictionary<int,string>()
{
{ 1, new [] { "Item1", "Item2" }},
{ 2, new [] { "Item1", "Item2", "Item3", "Item4" }}
};
你可以简单地调用:
cbox1.Items.AddRange(itemChoices[cbox1]);
cbox2.Items.AddRange(itemChoices[cbox2]);