Как ограничить datagridview, чтобы создать 2 строки? - PullRequest
0 голосов
/ 19 марта 2012

У меня есть datagridview в моем приложении для Windows. По умолчанию сетка данных загружается с 1 строкой. Если мы введем что-то в ячейку, это создаст еще одну строку под этой строкой. Это продолжается так. Теперь, если кто-то что-то печатает, а затем удаляет это, созданная ниже строка не удаляется. Я хочу, чтобы запретить пользователю создавать неограниченное нет. строк без каких-либо данных. Можно ли ограничить просмотр данных для создания максимум 2 таких пустых строк? Подскажите пожалуйста, как это можно сделать.

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Это не может быть достигнуто автоматически. Вам нужно будет сделать это вручную. Лучший способ сделать это - правильно обрабатывать события cellvalidating и cellvalidated. И отмените событие, если ячейки пусты. Вы также можете установить свойство AllowUserToAddRows = false и вручную добавить новую строку, например. нажатием кнопки:

                // source is IBindingSource

                MyObject newObject = this.source.AddNew();
                DataGridViewRow row = this.dgv.Rows[this.source.IndexOf(newObject)];
                row.Selected = true;

                int maxSelectedOrder = this.source.IndexOf(newObject );
                int minSelectedOrder = this.source.IndexOf(newObject );

                int displayedRows = this.dgv.Rows.GetRowCount(DataGridViewElementStates.Displayed);
                int firstDisplayed = this.dgv.FirstDisplayedScrollingRowIndex;
                int lastDisplayed = displayedRows + firstDisplayed - 1;

                if (maxSelectedOrder - 1 > lastDisplayed && minSelectedOrder - 1 > firstDisplayed)
                {
                    int firstToDisplay = displayedRows + firstDisplayed - 1 - (displayedRows - 1);

                    if (firstToDisplay > 0)
                    {
                        this.dgv.FirstDisplayedScrollingRowIndex = firstToDisplay;
                    }
                }

                this.dgv.CurrentCell = row.Cells[0];
                this.dgv.Focus();
0 голосов
/ 19 марта 2012

Установить свойство AllowUserTAddRows=false; или через код

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