【问题标题】:Calling a method of a user control from parent form从父窗体调用用户控件的方法
【发布时间】:2016-01-28 21:52:06
【问题描述】:

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

我的设置如下:

我有一个名为“SearchForm”的 MainForm 和一个名为“ShowSequence”的第二个 Form(它从 SearchForm 中调用)。

ShowSequence 表单附有一个名为“SequenceList”的用户控件,上面有一个 WPF ListView。加载 ShowSequence 表单时会填充 ListView 内容。

现在,当我单击 SearchForm 中的按钮时,我想刷新 ShowSequence 表单上的 SequenceList (UserControl) 的 ListView。

因为我正在创建几个这样的 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。我猜是因为我创建了一个 SequenceList 的对象而不是在打开的表单上调用方法?还是我错了?

【问题讨论】:

  • 感谢您编辑 SwiftArchitekt。

标签: c# wpf winforms listview


【解决方案1】:

好的,我找到了解决办法。

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

这就是诀窍:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2017-06-07
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多