我有一个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();
}
代码运行得很好。 但我需要的是如何设置一个功能动作..
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 ?
}
提前谢谢。 :)
答案 0 :(得分:1)
我不清楚“设置功能动作”是什么意思。 您想在控制器的上下文中立即调用该函数吗?在这种情况下,您提供的代码是正确的。 另一方面,如果要将用户控件配置为在稍后的某些代码中使用提供的操作,则需要按如下方式存储该操作
userControl1中的
Action externalFunction = null;
public void RefreshLocalFM(Action action)
{
externalFunction = action;
}
// later code
private void someMethod()
{
externalFunction();
}
我希望我理解正确。
答案 1 :(得分:1)
我已经找到了解决方案..
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
}