Проблема следующая: по кнопке создаётся новая пустая строка в конце таблицы (она автоматически выделяется). Необходимо, чтобы при смене пользователем фокуса на другую строчку, эта только что созданная пустая строчка удалялась.
Не уверен, что "удалялась" является правильным в этом случае термином, возможно, правильнее будет сказать "отменить", т.к. если в эту пустую строку внести данные (к колонкам привязаны textbox'ы) и нажать на кнопку "Добавить", то они внесутся в бд и датагрид.
Пытался отталкиваться от этого, но не получается достигнуть поставленной цели:
private void button_newRow_Click_1(object sender, EventArgs e)
{
int a;
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0];
dataGridView1.Rows.Add();
int currentRow = dataGridView1.SelectedRows[0].Index;
if (currentRow < dataGridView1.RowCount)
{
dataGridView1.Rows[++currentRow].Selected = true;
a = dataGridView1.Rows.Count;
textBox3.Clear(); textBox4.Clear(); textBox5.Clear(); textBox6.Clear(); richTextBox1.Clear(); richTextBox2.Clear();
textBox3.Focus();
try
{
if (dataGridView1.Rows[a].Selected == false)
{
dataGridView1.Rows.Remove(dataGridView1.Rows[currentRow]);
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0];
dataGridView1.Rows[--currentRow].Selected = true;
dataGridView1_CellClick(dataGridView1, new DataGridViewCellEventArgs(0, 0));
}
}
catch
{
}
button_newRow.Enabled = false;
}
IBindingList, этого типа можно сделать свойство, тогда туда влезет любой список с любым типом данных. Подозреваю, что вам не очень то и хотелось разбираться. Смысл привязок не в том, что это круто и модно, а в том что кода писать в 5 раз меньше придется. Примерно во столько раз похудело мое первое Winforms приложение, когда я узнал про привязки. Познакомтесь ORM Entity Framework, она сама умеет связывать классы и данные в БД, совсем другой мир. – aepot Jun 04 '22 at 12:47