Текстовое поле не будет обновляться при передаче содержимого из формы 2 в форму 1 - PullRequest
2 голосов
/ 03 ноября 2011

Я имею в виду информацию из моего предыдущего вопроса , в которой подробно рассказывается, как обновить текстовое поле в форме 1 из формы 2.

Я дважды проверил все, и у меня все еще естьпроблема при обновлении текстового поля.При нажатии кнопки он должен отображать содержимое в txtDisplay в MainWindow с помощью параметра ChangeTextBox.Но это не так.

Я что-то здесь упустил?Если нет, как я могу исправить эту проблему?

Код с проблемой:

        private void btnAddEntry_Click(object sender, EventArgs e)
        {
            // Making sure that type is selected.
            if (cmbType.SelectedIndex == -1)
            {
                MessageBox.Show("Please select entry type!", "Error!", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            // Each field must be filled for specified type.
            // Here we are checking if all fields were filled.
            else if ((cmbType.SelectedIndex == 0 && (txtUserName.Text == string.Empty || txtPassword.Text == string.Empty)) ||
                (cmbType.SelectedIndex == 1 && (txtURL.Text == string.Empty || txtPassword.Text == string.Empty)) ||
                (cmbType.SelectedIndex == 2 && (txtSoftwareName.Text == string.Empty || txtSerialCode.Text == string.Empty)))
            {
                MessageBox.Show("Please fill all the fields!", "Error!", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                int totalEntries = 0;

                mainWindow = new MainWindow();

                if(cmbType.SelectedIndex == 0)
                {
                    addedEntry.Add(new AddPC(cmbType.Text, txtUserName.Text, txtPassword.Text));
                }
                else if(cmbType.SelectedIndex == 1)
                {
                    addedEntry.Add(new AddWebSite(cmbType.Text, txtUserName.Text, txtPassword.Text, txtURL.Text));
                }
                else if(cmbType.SelectedIndex == 2)
                {
                    addedEntry.Add(new AddSerialCode(cmbType.Text, txtSoftwareName.Text, txtSerialCode.Text));
                }

                StringBuilder stringBuilder = new StringBuilder();

                foreach (var list in addedEntry)
                {
                    if (list is AddPC)
                    {
                        totalEntries++;

                        AddPC tmp = (AddPC)list;

                        stringBuilder.Append(tmp.ToString());
                    }
                    else if (list is AddWebSite)
                    {
                        totalEntries++;

                        AddWebSite tmp = (AddWebSite)list;

                        stringBuilder.Append(tmp.ToString());
                    }
                    else if (list is AddSerialCode)
                    {
                        totalEntries++;

                        AddSerialCode tmp = (AddSerialCode)list;

                        stringBuilder.Append(tmp.ToString());
                    }
                }

                mainWindow.ChangeTextBox = stringBuilder.ToString();

                // The foreach loop works and display because content is showing here.
                MessageBox.Show(stringBuilder.ToString());

                // Clearing all fields.
                ClearFields();
            }
        }

Надеюсь на помощь.

С уважением.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Не пишите mainWindow = new MainWindow();.
Вы хотите существующий MainWindow, а не новый.

1 голос
/ 03 ноября 2011

Я вижу, что вы создаете новый экземпляр MainWindow, вы обновляете новый, а не старый.Передайте главное окно второму окну и измените этот экземпляр, вы увидите ваши изменения.

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