我正在使用DataSource
向我的DataGridView
填写可用的信用卡,然后我在最后添加虚拟信用卡以使用新的信用卡。
private void ListCards()
{
cards.Add(new CreditCard
{
Token = "new",
LastFour = "New Card"
});
}
当我选择“新”行并将其传递到下一篇文章时,我得到Index was out of range. Must be non-negative and less than the size of the collection.
private void Ok_btn_Click(object sender, EventArgs e)
{
int selectedRowIndex = CreditCards_grdvw.SelectedCells[0].RowIndex;
tkn = Convert.ToString(CreditCards_grdvw.SelectedRows[selectedRowIndex].Cells[0]);
this.DialogResult = DialogResult.OK;
Close();
}
我已经检查过以确保行数大于SelectedRowIndex
但我仍然收到错误。此外,当cards
最初有一条记录并添加虚拟“新”记录时,我使用Visual Studio的即时窗口?CreditCards_grdvw.SelectedRows[0].Cells[0].Value
,我回到“新”。我应该在索引0处获得实际的卡,而不是虚拟卡。
我意识到我可以添加另一个按钮来获得相同的功能,但我不愿意。任何帮助将不胜感激。
答案 0 :(得分:0)
这是问题吗?
在获取selectedRowIndex时,您引用SelectedCells集合中的第一个对象。但是,在下一行中,您尝试引用SelectedRows集合。这样可以解决吗?
private void Ok_btn_Click(object sender, EventArgs e)
{
int selectedRowIndex = CreditCards_grdvw.SelectedCells[0].RowIndex;
tkn = Convert.ToString(CreditCards_grdvw.Rows[selectedRowIndex].Cells[0]); //Reference the Rows[] collection, not SelectedRows[].
this.DialogResult = DialogResult.OK;
Close();
}