Изменения в Form2 не отражают изменений в Form1 - PullRequest
1 голос
/ 28 августа 2011

У меня проблема с datagridview.

Форма 1: заполнение данных с datagridview ... (когда я щелкаю строку представления сетки данных, соответствующие значения строки переносятся в другую форму)

Форма 2: у меня есть текстовые кнопки с кнопкой сохранения

когда я нажимаю на строку представления таблицы данных, значения переносятся в другую форму, это работает нормально .....

в форме 2Я сделал некоторые изменения с этими данными, но эти изменения не отражаются в представлении таблицы данных в форме 1 ...

Как я могу решить эту проблему .....

Ответы [ 4 ]

2 голосов
/ 28 августа 2011

Есть несколько вариантов для вас.Передача экземпляра Form1 в Form2 и обновление источника данных Form1 DataGridView из Form2 является одним из вариантов.

Например.Конструктор Form2 может иметь вид, подобный приведенному ниже

1 голос
/ 28 августа 2011

Чтобы ответить на этот вопрос, мы должны знать, как вы передаете значения выбранного GridRow элементам управления другой формы.

, если ваша сетка связана, например, с набором данных / данными, когда вывыберите строку в пользовательском интерфейсе, и отобразится другая форма с полями этого DataGridRow, разбитыми на разные элементы управления. Какие объекты вы передаете другой форме?строка в сетке, таким образом, во второй форме у вас все еще есть ссылка на datarow, и когда кто-то изменяет значение в текстовом поле (например), вы можете вручную обновить значение столбца datarow, добавив новое значение, введенное пользователем.1005 *

таким образом, если в предыдущей форме вы обновите сетку, вы увидите изменения.

Обратите внимание, что это можно сделать разными способами, и я, вероятно, не буду использовать именно этоподход, если бы я мог написать всю логику с нуля, но вы говорите слишком мало, так чтобольше ничего не предлагайте.

0 голосов
/ 29 августа 2011

Создайте BindingSource в Form1, используйте его для заполнения DataGridView в Form1. Передайте BindingSource в Form2, прежде чем вызывать его. Все ваши изменения будут автоматически подключены. Вам не нужно будет предоставлять какое-либо свойство в Form2, кроме свойства BindingSouce (если вы не хотите передавать его через конструктор).

0 голосов
/ 29 августа 2011

Если вы показываете Form2 с помощью метода ShowDialog (), тогда этот вызов приостановит Form1, пока Form2 не закроется.

Это самый простой подход. Э.Г.

Form1 {
    UpdateRowMethod() {
      DataRow Row = GetSelectedRow()
      Form2 frm;
      frm = new Form2(Row.Field1, Row.Field2, Row.Field3)
      if frm.ShowDialog() = OK {
         Row.Field1 = frm.Property1
         Row.Field2 = frm.Property2
         Row.Field3 = frm.Property3
         DataGridView1.InvalidateSelectedRow()
      }
   }
}

И как вы можете видеть, Form2 принимает значения полей строки в качестве параметров своего конструктора. И Form2 возвращает обратно обновленные данные через свои свойства.

И если вы используете метод Show (), вам нужно реализовать события / делегаты, чтобы уведомить Form1 об изменении данных.

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