在 CellClick 或 ColumnHeaderMouseClick 事件中直接使用 e.RowIndex、e.ColumnIndex 存取 Rows[e.RowIndex] 會報「索引超出範圍」,因點擊列標題時 RowIndex = -1,點擊行標題時 ColumnIndex = -1。
private void dataGridView4_CellClick(object sender, DataGridViewCellEventArgs e) {
// 忽略列標題、行標題點擊
if (e.RowIndex < 0 || e.ColumnIndex < 0) return;
string buttonText = dataGridView4.Rows[e.RowIndex].Cells[e.ColumnIndex].Value?.ToString();
// 後續邏輯...
}
CellClick + 上述判斷。ColumnHeaderMouseClick,此時 e.RowIndex == -1 固定,直接用 e.ColumnIndex。RowHeaderMouseClick。if (dataGridView4.Rows[e.RowIndex].Cells[e.ColumnIndex].Value is string txt) {
// 使用 txt
}