C# 索引超出范围。必须为非负且小于集合的大小。参数名称:索引
伙计们,我真的需要你们的帮助。我在上面的标题中得到了一个错误。所有尝试都是在datagridview被单击时,它应该将所选记录显示到文本框中,并将其以新的形式打开。这是我的密码C# 索引超出范围。必须为非负且小于集合的大小。参数名称:索引,c#,C#,伙计们,我真的需要你们的帮助。我在上面的标题中得到了一个错误。所有尝试都是在datagridview被单击时,它应该将所选记录显示到文本框中,并将其以新的形式打开。这是我的密码 using System.Data; using System.Data.SqlClient; namespace DataGridview { public partial class FrmDataGrid : Form { SqlCo
using System.Data;
using System.Data.SqlClient;
namespace DataGridview
{
public partial class FrmDataGrid : Form
{
SqlConnection con = new SqlConnection("ConnectionString");
public FrmDataGrid()
{
InitializeComponent();
}
private void FrmDataGrid_Load(object sender, EventArgs e)
{
try {
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM UserData";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
try
{
textBox1.Text = dataGridView1.SelectedRows[0].Cells["UserID"].Value.ToString();
textBox2.Text = dataGridView1.SelectedRows[1].Cells["FullName"].Value.ToString();
textBox3.Text = dataGridView1.SelectedRows[2].Cells["Username"].Value.ToString();
textBox4.Text = dataGridView1.SelectedRows[3].Cells["UserPassword"].Value.ToString();
textBox5.Text = dataGridView1.SelectedRows[4].Cells["UserRole"].Value.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
FrmUpdate FormUpdate = new FrmUpdate();
FormUpdate.ShowDialog();
}
}
}
在以下调用之一期间,您很可能选择了超出范围的行:
dataGridView1.SelectedRows[0]
您试图获取5行,甚至没有检查db查询结果中是否存在5行。我认为您正在尝试获取一行的5列,因此请根据您的要求使用以下代码:
textBox1.Text = dataGridView1.SelectedRows[0].Cells["UserID"].Value.ToString();
textBox2.Text = dataGridView1.SelectedRows[0].Cells["FullName"].Value.ToString();
textBox3.Text = dataGridView1.SelectedRows[0].Cells["Username"].Value.ToString();
textBox4.Text = dataGridView1.SelectedRows[0].Cells["UserPassword"].Value.ToString();
textBox5.Text = dataGridView1.SelectedRows[0].Cells["UserRole"].Value.ToString();
请阅读错误消息并使用调试器。它告诉你你要的是一个集合中不存在的元素。最可能的罪魁祸首是以下行之一:
dataGridView1.SelectedRows[0]
。单击单元格时,您可能没有选择5行。感谢您的帮助。我刚想出来,你的答案是正确的。我非常感谢你的帮助。但是我怎样才能将这些数据发送到一个新的表单中呢?你能帮我获取上面的代码吗。当我单击“数据网格视图”单元时,我希望它打开一个包含所选记录的新表单?先谢谢你。