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