C# 获取组合框项目标记
困惑于我为什么会出现这个错误:C# 获取组合框项目标记,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,困惑于我为什么会出现这个错误: 组合框项: private readonly string[] cbTexts = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "(Cleare)" }; 动态组合框: private void comboOptions() { cmb = new ComboBox[countWai
组合框
项:
private readonly string[] cbTexts = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "(Cleare)" };
动态组合框
:
private void comboOptions()
{
cmb = new ComboBox[countWaiters];
int width = 100;
int height = 20;
for (int i = 0; i <= 3; ++i)
{
newBox = new ComboBox();
newBox.Text = "(Request)";
newBox.Size = new Size(width, height);
newBox.Location = new Point(0, (i * height));
cmb[i] = newBox;
cmb[i].SelectedIndexChanged += new EventHandler(cmb_SelectedIndexChanged);
foreach (string cbText in cbTexts)
{
cmb[i].Items.Add(cbText);
}
pnlRequests.Controls.Add(newBox);
}
}
void cmb_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox senderCmb = (ComboBox)sender;
int row = (int)senderCmb.Tag;
//this is where the program crashes
//more code located here that does something
}
错误:
注意:此图像中的某些方法名称已更改,但不起任何作用
您没有在给定代码中的任何位置设置
标记
属性,我不明白您为什么需要这样做。我怀疑您想要获取当前的SelectedIndex
:
int row = senderCmb.SelectedIndex;
我漏掉了一行,犯了一个愚蠢的错误:
cmb[i].Tag = i;
我看不出您在哪里设置tag属性,因此它为NULL也就不足为奇了(因此在尝试转换为int时会出现错误)。。愚蠢的错误!