Я хочу, чтобы передать список объектов дочерней форме, привязать это к некоторым элементам управления, отредактировать свойства списка из этого элемента управления, а затем передать этот измененный список родительскому элементу формы, только если пользователь нажимает кнопку ОК. Если пользователь ускользнет или кликнет, то я не хочу, чтобы исходный список обновлялся.Связывание данных обновляет переменные на родительской форме
ОК, так что я открываю форму ребенка от моего родителя из, как передать список в той форме, как так:
List<Names> nameList = new List<Names>();
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
using (Form2 fm2 = new Form2(nameList))
{
fm2.ShowDialog();
if (fm2.NameListProperty != null)
{
nameList = fm2.NameListProperty;
}
}
}
В моей детской форме, Form2
, я связываю список в ListBox и TextBox :
List<Names> nameList = new List<Names>();
public List<Names> NameListProperty { get; set; }
public Form2(List<Names> nameListPassed)
{
InitializeComponent();
nameList = nameListPassed;
BindingSource bs = new BindingSource();
bs.DataSource = nameList;
listBoxNames.DataSource = bs;
listBoxNames.DisplayMember = "FullName";
txtSurname.DataBindings.Add("Text", bs, "Surname", true, DataSourceUpdateMode.OnPropertyChanged);
}
Затем, наконец, когда пользователь нажимает кнопку «ОК», свойство имеет значение измененного имени. Если пользователь не нажимает «ОК», то есть удаляет или щелкает «Отмена», свойство не устанавливается и остается как null
и не должно быть назначено обратно мастеру nameList в родительской форме Form1.
private void btnOK_Click(object sender, EventArgs e)
{
NameListProperty = nameList;
this.Close();
}
Однако, проблема заключается в том, что список на родительской форме не обновляется, независимо от того, как пользователь закрывает форму ребенка. Свойство, которое используется для передачи списка обратно в родительскую форму, устарело, так как список в родительской форме обновляется в любом случае. Я думаю, мой вопрос заключается в том, как остановить это, чтобы я мог выбрать, будут ли изменения в дочерней форме переданы обратно в родительскую форму.
Эй. Вы пробовали это. См. Ссылку [link] (https://support.microsoft.com/en-us/kb/816145) для получения результата диалогового окна –
Спасибо, я пробовал это, но это не сработало. Я думаю, что проблема связана с привязкой привязки данных к родительской форме или чем-то еще. Я не очень хорошо знаком с привязкой данных, поэтому я не уверен. Список в родительской форме обновляется в соответствии с обновлениями в дочернем элементе. – mike7mike