[ad_1]
private void ItemGV_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { txtItemnum.Text = ItemGV.SelectedRows[0].Cells[0].Value.ToString(); txtItemname.Text = ItemGV.SelectedRows[0].Cells[1].Value.ToString(); comboCat.SelectedItem = ItemGV.SelectedRows[0].Cells[2].Value.ToString(); txtitemprice.Text = ItemGV.SelectedRows[0].Cells[3].Value.ToString(); //txtemail.Text = UserGV.SelectedRows[0].Cells[4].Value.ToString(); }
我尝试过的:
在单击事件上,我正在编写代码,将网格值获取到文本框
解决方案1
我们不能告诉你“它就在那里!” 因为我们需要您的代码与您的数据一起运行,以准确找出发生问题的位置以及导致问题的值 – 在开始查看之前您需要这些 为什么 这是不对的!
我们所能做的就是解释为什么它会导致问题。 C# 中的数组是通过索引访问的值序列:并且该索引必须介于零和“值的数量减一”之间。 因此,如果您有一个包含五个整数的数组,则有效索引为 0、1、2、3 和 4。所有其他索引都会给出错误,因为您尝试处理的值不存在。
所以你可以说:
C#
i = arr[0]; i = arr[1]; i = arr[2]; i = arr[3]; i = arr[4];
但不是:
C#
i = arr[-1]; i = arr[5]; i = arr[666];
并且您的代码使用了多个数组,其中任何一个都可能是问题的根源。
所以,这将取决于你。
幸运的是,您有一个可用的工具可以帮助您了解正在发生的情况:调试器。 如果您不知道如何使用它,快速搜索“Visual Studio 调试器”应该可以为您提供所需的信息。
在函数的第一行放置一个断点,然后通过调试器运行代码。 然后查看您的代码和数据并找出应该手动发生的情况。 然后单步执行每一行,检查您期望发生的情况是否确实发生。 如果不是,那就是你遇到了问题,你可以回溯(或再次运行它并更仔细地查看)以找出原因。
据猜测,SelectedItems 集合为空,或者网格中没有足够的列,但您需要使用数据运行代码来判断。
抱歉,我们无法为您做到这一点 – 您是时候学习一项新的(并且非常非常有用)技能了:调试!
[ad_2]
コメント