Обновить форму из события закрытия формы в другой форме - PullRequest
1 голос
/ 16 мая 2011

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

Я попытался сделать это:

Как обновить представление данныхпри закрытии дочерней формы?

безрезультатно, так как это вызывает другие ошибки в моем проекте.

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

Спасибо

public partial class frmSwitch : Form 
{
    public frmSwitch() 
    {
        //'add a label and a buttom to form
        InitializeComponent();
    }


    public void PerformRefresh() 
    {
        this.propertyInformationBindingSource.EndEdit();
         this.propertyInformationTableAdapter.Fill(this.newCityCollectionDataSet.PropertyInformation);
        this.propertyInformationDataGridView.Refresh()      }
}

public partial class frmSummary : Form
{
    frmSwitch _owner;
    public frmSummary(frmSwitch owner)
    //public frmSummary()
    {
        InitializeComponent();

            _owner = owner;
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSummary_FormClosing);
        }
        private void frmSummary_FormClosing(object sender, FormClosingEventArgs e)
        {
           _owner.PerformRefresh();
        }

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

private void propertyInformationDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    System.Data.DataRowView SelectedRowView;
    newCityCollectionDataSet.PropertyInformationRow SelectedRow;

    SelectedRowView = (System.Data.DataRowView)propertyInformationBindingSource.Current;
    SelectedRow = (newCityCollectionDataSet.PropertyInformationRow)SelectedRowView.Row;

    frmSummary SummaryForm = new frmSummary();
    SummaryForm.LoadCaseNumberKey(SelectedRow.CaseNumberKey, true, null);
    SummaryForm.Show();



}

1 Ответ

3 голосов
/ 16 мая 2011

Звучит так, будто вы пытаетесь создать новый экземпляр формы Switchboard вместо изменения существующего экземпляра формы. Когда вы открываете форму с коммутатора, я бы предложил передать экземпляр ссылки на форму коммутатора. Затем, когда вы закрываете открытую форму, в вашем событии form_closing вы будете ссылаться на переданный экземпляр как форму Switchboard для обновления.

Этот метод и другие указаны в этой статье:

http://colinmackay.co.uk/blog/2005/04/22/passing-values-between-forms-in-net/

...