DataGridView: как выбрать первую ячейку в текущей строке, когда MultiSelect имеет значение true - PullRequest
1 голос
/ 25 апреля 2009

Я создаю свой класс DataGridViewEx, унаследованный от DataGridView.
Я хочу создать метод для выбора первой ячейки в текущей строке, поэтому я написал это:

        /// <summary>
    /// The method selects first visible cell in a current row.
    /// If current row is null, nothing is done. 
    /// If any cells are selected, they are unselected before selecting first cell.
    /// </summary>
    public void SelectFirstCellInCurrentRow()
    {
        if (CurrentRow == null) return;

        ClearSelection();
        foreach (DataGridViewCell cell in CurrentRow.Cells)
        {
            if (cell.Visible)
            {
                cell.Selected = true;
                return;
            }
        }
    }

И я хочу использовать это, например, так:

     private void btnAdd_Click(object sender, EventArgs e)
        {
            bindingSource.Add(new Customer());
            bindingSource.MoveLast();
            grid.SelectFirstCellInCurrentRow();
            grid.BeginEdit(false);
        }

Моя задача - добавить новую строку в сетку и начать редактирование ее первой ячейки.
Этот код работает нормально, если grid.MultiSelect = false, но если grid.MultiSelect = true, тогда он не работает должным образом: все ячейки отменены, первая ячейка последней строки выбрана, но !!! ячейка в последнем ряду столбца, который был выбран последним, редактируется вместо первой ячейки!

Вот как это выглядит:
1) Я выбираю несколько ячеек:
_ http://img13.imageshack.us/img13/2528/beforeadd.gif

2) После нажатия кнопки «Добавить»:
_ http://img211.imageshack.us/img211/847/afteradd.gif

Заранее спасибо.

PS. Почему я не могу добавить изображения?

1 Ответ

3 голосов
/ 25 апреля 2009

вместо

cell.Selected = true;

попробовать

CurrentCell = cell;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...