【问题标题】:Clearing ListBox from another Form从另一个表单中清除 ListBox
【发布时间】:2020-02-18 06:40:10
【问题描述】:

我一直坚持这一点,不知道我在这里做错了什么。我正在尝试通过按钮从另一个Form 中清除ListBox

在我的主要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,但仍然是同样的问题。

【问题讨论】:

  • Form1的构造函数有你要清除的数据吗?另一方面,您是否从正确的Form1 实例中清除?
  • 您可以尝试使用Trace.Write(DeviceList.Items[0]); 记录您的事件吗?因为它可能正在工作但用户界面没有更新?

标签: c# .net winforms function listbox


【解决方案1】:

在您当前的代码中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2014-10-09
    相关资源
    最近更新 更多