私は本当にあなたの助けが必要です。上記のタイトルに誤りがあります。すべての操作は、datagridviewがクリックされたときに、選択されたレコードをテキストボックスに表示するだけでなく、新しいフォームを開く必要があります。ここに私のコードです。インデックスが範囲外でした。非負で、コレクションのサイズより小さくなければなりません。パラメータ名:index
あなたが最も可能性が高いこれらの呼び出しのいずれかの間に、範囲外の行を選択している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行が選択されていない可能性があります。 – Rob