C# Gridview:索引超出范围。必须是非负的且更少

C# Gridview:索引超出范围。必须是非负的且更少,c#,asp.net,.net,C#,Asp.net,.net,我想根据我选择的行从gridview中获取值。 我收到错误“索引超出范围。必须为非负且小于集合的大小。参数名称:索引” selectedIndexChanged上受保护的void(对象发送方,事件参数e) { 字符串名称=GridView1.SelectedRow.Cells[0]。文本; } /*---------------------------------------------------------------------------*/ 您似乎使用了错误的EventHandler

我想根据我选择的行从gridview中获取值。 我收到错误“索引超出范围。必须为非负且小于集合的大小。参数名称:索引”

selectedIndexChanged上受保护的void(对象发送方,事件参数e)
{
字符串名称=GridView1.SelectedRow.Cells[0]。文本;
} 
/*---------------------------------------------------------------------------*/

您似乎使用了错误的EventHandler尝试以下示例

private void GridView1_SelectionChanged(object sender, EventArgs e)
{
   if (GridView1.SelectedCells.Count > 0)
   {
     int selectedrowindex = GridView1.SelectedCells[0].RowIndex;
     DataGridViewRow selectedRow = GridView1.Rows[selectedrowindex];  
     name = Convert.ToString(selectedRow.Cells["Cell Zero's Name goes here"].Value);           
   }
}
如果要在此方法之外使用
名称
局部变量,则
字符串名称
需要 要在本地范围之外声明的

例如,在类级别将其声明为以下内容,然后您可以全局使用它

public static string name = string.Empty;

您还可以签出一些其他方法/事件

再一次,一个简单的
谷歌搜索
可以帮助您解决这个问题,有很多这样的工作示例..我只需要在所选行上获取变量而不调用事件。那么您想在代码中的什么位置执行此操作。。?为什么您试图避免使用事件来执行此操作。。?您是否会想出自己的方法来检查这一点,例如在
页面加载
事件中。。?请解释这一点,您可以通过检查
GridView
来执行此操作。选择Row`并执行与
Smola
发布的答案相反的操作。。。
public static string name = string.Empty;