如何设置userControl函数';s从其父窗体执行的操作

本文关键字:窗体 操作 执行 何设置 设置 函数 userControl | 更新日期: 2023-09-27 18:28:04

我有一个userControl函数,我想从父窗体设置它的操作。

我已经从父窗体设置了userControl按钮操作。它是这样工作的:

在Form1.cs:中

    public Form1()
    {
        InitializeComponent();
        fileManagerLocal1.SetSendButton(SendMethod);
    }
    private void SendMethod()
    {
        //whatever ...
    }

在userControl1.cs:中

public void SetSendButton(Action action)
    {
        btnSend.Click += (s, e) => action();
    }

代码up工作得很好。但我需要的是如何设置Function操作。。

在Form1.cs 中

public Form1()
    {
        InitializeComponent();
        fileTransfer1.RefreshLocalFM(RefreshFM);
    }
 public void RefreshFM()
    {
        fileManagerLocal1.btnRefresh.PerformClick();
    }

在userControl1.cs 中

 public void RefreshLocalFM(Action action)
    {
        action(); // what should be in here ?
    }

提前感谢。:)

如何设置userControl函数';s从其父窗体执行的操作

我不清楚你所说的"设置函数操作"是什么意思。是否要立即在控制器的上下文中调用该函数?在这种情况下,您提供的代码是正确的。另一方面,如果您想将用户控件配置为在稍后的代码中使用所提供的操作,那么您需要将该操作存储为如下

在用户中Control1

Action externalFunction = null;
public void RefreshLocalFM(Action action)
    {
        externalFunction = action;
    }
// later code
private void someMethod()
{
   externalFunction();
}

我希望我正确地理解你。。

我已经找到了一个解决方案。。

在Form1.cs:中

public Form1()
{
    InitializeComponent();
    fileTransfer1.refreshAction = new Action (RefreshFM);
    //let's say refreshAction is a public action variable in fileTransfer1 class
}
public void RefreshFM()
{
    fileManagerLocal1.btnRefresh.PerformClick();
}

在userControl1.cs:中

public Action refreshAction;
//then it can be called from any place.
private void RefreshLocalFM()
{
    refreshAction.Invoke(); //this fires the action that we initialized from form1.cs
}