Очистка ListBox от другой формы - PullRequest
0 голосов
/ 18 февраля 2020

Я застрял на этом и не знаю, что я делаю здесь неправильно. Я пытаюсь очистить ListBox от другого Form с помощью кнопки.

На моем основном Form, где у меня есть ListBox У меня есть эта функция:

public void test()
{
    this.DeviceList.Items.Clear();
}

А с другой Form, где у меня есть кнопка, у меня есть:

Form1 mainform = new Form1();
mainform.test();

Но когда я нажимаю кнопку, ничего не происходит. Теперь, если я переключу this.DeviceList.Items.Clear(); на MessageBox.Show("test");, это будет работать нормально. Но не в том случае, если я использую this.DeviceList.Items.Clear();.

Я пытался использовать без this, но все равно та же проблема.

1 Ответ

1 голос
/ 18 февраля 2020

В вашем текущем коде:

Form1 mainform = new Form1();
mainform.test();

вы создаете новую форму не Show, но очищаете ее DeviceList. Вы должны найти существующую форму, например:

using System.Linq;

...

var mainform  = Application
  .OpenForms
  .OfType<Form1>()     //TODO: put the right type if required
  .LastOrDefault();    // if you have several intances, let's take the last one

if (mainform  != null) // if MainForm instance has been found...
  mainform .test();    // ... we clear its DeviceList
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...