从父窗体调用用户控件的方法

本文关键字:控件 方法 用户 调用 窗体 | 更新日期: 2023-09-27 18:32:25

我在访问我的用户控件的方法时遇到问题。

我的设置如下:

我有一个名为"SearchForm"的主窗体和一个名为"ShowSequence"的第二个窗体(它是从SearchForm调用的)。

ShowSequence 窗体附加了一个名为"SequenceList"的用户控件,上面附加了一个 WPF ListView。加载显示序列窗体时填充列表视图内容。

现在,当我单击搜索窗体中的按钮时,我想刷新 ShowSequence 窗体上 SequenceList (UserControl) 的列表视图。

因为我正在创建几个这样的ShowSequence表单(作为实例),所以我必须找到我需要的ShowSequence表单。我将通过名称识别它并调用MyMethod():

if  (System.Windows.Forms.Application.OpenForms["NameofForm"] != null)
{
    (System.Windows.Forms.Application.OpenForms["NameofForm"] as ShowSequence).MyMethod();
}

因此,ShowSequence Form 上的 MyMethod 现在应该访问 SequenceList 类 (UserControl) 中名为 Refresh() 的方法,并开始刷新我的 ListView。

显示序列形式...

public void MyMethod()
{
    SequenceList.Refresh(); // error
}

这是不可能的。系统告诉我创建一个对象引用来访问 Refresh() 方法,因为它不是静态的。

所以我用了这个:

public void MyMethod()
{
    SequencList SeqLi = new SequenceList();
    SeqLi.Refresh();
}

但是当我这样做时,我不会更新在打开的ShowSequence Form实例中运行的SequenceList.ListView。我猜是因为我创建了一个序列列表的对象,而不是在打开的窗体上调用方法?还是我错了?

从父窗体调用用户控件的方法

好的,我找到了一个解决方案。

我必须使用我在创建时在 SequenceView 中创建的 (UserControl) SeuquenceList 的对象。

这确实:)