Как автоматически завершить режим редактирования ячеек DataGridView? - PullRequest
1 голос
/ 05 января 2012

это дополнительный вопрос из моего предыдущего.Вы можете найти его здесь .

У меня возникла еще одна проблема после окончательного решения моей предыдущей проблемы: когда я назначаю кнопку для добавления значения в новую строку в DataGrid, вся ячейка будетв режиме редактирования, пока я не нажму на другую ячейку и не заполню ее и / или не добавлю вкладку до конца строки (ну, по-видимому, эта не работает), тогда он завершит режим редактирования.Я использую dataGridView.BeginEdit(true);, чтобы начать режим редактирования, чтобы я мог разобрать значение в текстовое поле (см. Мой предыдущий вопрос).Поэтому, если я вставлю другое значение и нажму кнопку, новое значение заменит старое значение, которое было вставлено ранее, потому что оно в настоящее время все еще находится в режиме редактирования.Я пытался использовать dataGridView.EndEdit();, dataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);, cell.DataGridView.EndEdit() и cell.DataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);, но, видимо, это не завершает режим редактирования :( Что я хотел, так это когда я нажимаю кнопку, значение внутри текстового поля будет вставленов первый столбец текстового поля (этот уже работал). Тогда мне не нужно щелкать или заполнять другой столбец, чтобы завершить режим редактирования. Поэтому я просто наберу что-нибудь в текстовое поле и нажимаю кнопку только до тех пор, пока не захочучтобы остановить. После этого я начинаю заполнять другой столбец. Кто-нибудь знает, как решить эту проблему? sample image РЕДАКТИРОВАТЬ 1: вы видите разницу? посмотрите на красный круг, верхний в настоящее время находится в режиме редактирования(потому что у него есть * после стрелки). нижний не находится в режиме редактирования (я сделал это вручную, выбрав элемент из выпадающего списка). Вот мой код в соответствии с моим предыдущим вопросом:

private void button1_Click(object sender, EventArgs e)
    {
        this.surat_jalanDataGridView.AllowUserToAddRows = true;
        string tokNum = this.textBox1.Text;

        if (this.textBox1.Text != "")
        {
            foreach (DataGridViewRow sjRow in this.surat_jalanDataGridView.Rows)
            {
                int RowIndex = surat_jalanDataGridView.RowCount - 1;
                DataGridViewRow R = surat_jalanDataGridView.Rows[RowIndex];

                DataTable table = new DataTable();
                DataRow newRow = table.NewRow();
                table.Rows.Add(newRow);

                DataGridViewCell cell = R.Cells[2];
                this.surat_jalanDataGridView.CurrentCell = cell;
                this.surat_jalanDataGridView.BeginEdit(true);

                R.Cells[2].Value = tokNum;
                cell.DataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);
            }
        }
        this.surat_jalanDataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);
    }

РЕДАКТИРОВАТЬ 2: Итак, я перетаскиваю surat_jalan из источников данных в мою форму окна, затем он автоматически становится сеткой данных с именем свойства surat_jalanDataGridView и даннымиЭто surat_jalanBindingSource img 2

1 Ответ

1 голос
/ 05 января 2012

Извините за задержку. Посмотрев, как вы настроили привязку к DataGridView, я могу дать вам лучшее руководство о том, как редактировать данные, к которым привязана сетка. Когда вы перетаскивали таблицу из представления источников данных в Visual Studio и отбрасывали ее в DataGridView, Visual Studio сделала для вас несколько вещей. Важно, чтобы вы по крайней мере понимали основы того, что было сделано, чтобы вы понимали, как вы можете манипулировать вашими данными, двигаясь вперед. Это Статья MSDN о том, как настроить привязку к элементам управления окнами из Visual Studio. Последний раздел описывает, что вы делаете. Последние предложения «Элемент управления DataGridView теперь привязан к таблице, которую вы перетащили в него. В панели компонентов появляются DataSet, TableAdapter и BindingSource.» являются важными. Поскольку Visual Studio генерирует код, который привязывает ваш элемент управления к вашей таблице, вы должны редактировать данные напрямую, чтобы обновить представление таблицы данных. В этом случае вы должны работать с сгенерированным DataSet (я предполагаю, что он был назван surat_jalanDataSet). Здесь - это описание того, как редактировать данные в наборе данных. Для вашего конкретного случая Добавление строк . Пожалуйста, дайте мне знать, если это поможет вам достичь ваших целей.

...