Hi everyone!
I am having an issue with checking for whether or not cells/columns/rows are selected in a datagridview.
Here is my code:
bool isRowSelected = dataGridView1.Rows[e.RowIndex - 1].Selected;
bool isColumnSelected = dataGridView1.Columns[e.ColumnIndex].Selected;
if (((dataGridView1.CurrentCell.ColumnIndex == 0) || (dataGridView1.CurrentCell.ColumnIndex == 1) || (dataGridView1.CurrentCell.ColumnIndex == 2)
|| (dataGridView1.CurrentCell.ColumnIndex == 3) || (dataGridView1.CurrentCell.ColumnIndex == 4)) && (!isRowSelected) || (!isColumnSelected))
{
this.comboBox1.Location = this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Location;
comboBox1.Width = 100;
this.comboBox1.SelectedValue = this.dataGridView1.CurrentCell.Value;
this.comboBox1.Show();
}
Expected Output:
Cell selected - combobox is supposed to be on top of the selected cell
Row selected - highlight that row and nothing else
Column selected - highlight that column (or) sort by that column
Actual Output:
Cell and Row selection - same
Column selection - this is erroring out pointing to this line.
bool isRowSelected = dataGridView1.Rows[e.RowIndex - 1].Selected;
For the reason of: Index was out of range. Must be non-negative and less than the size of the collection. (ArgumentOutOfRangeException)
I want to avoid having the combobox appear when a row or column is selected, just cell selection only. That is my intent.
Thanks everyone!