我有2个表单,我想调用Form1
接口中定义的Form2
函数。我尝试使用委托和事件。有没有更好的方法呢?
namespace atszodidb
{
public partial class Form1 : Form
{
}
}
interface db
{
void func(string param);
}
class db_veiksmai : db // veiksmai = actions
{
public db_veiksmai()
{
}
public void func(string param)
{
MessageBox.Show(param);
}
}
namespace atszodidb
{
public partial class Form2 : Form
{
void function()
{
}
{
}
如何从功能void func(string param)
拨打void function()
?我试图与代表这样做:
public static class Data
{
public delegate void MyEvent(string data);
public static MyEvent EventHandler;
}
并在Form2
Data.EventHandler("lalalal");
但是,我不知道在哪里写Data.EventHandler = new Data.MyEvent(func);
。我尝试了class db_veiksmai
的构造函数,但这是一个糟糕的解决方案。
答案 0 :(得分:3)
您需要一个类的实例才能调用实例方法。所以:
public partial class Form2 : Form
{
void function()
{
db_veiksmai mydb = new db_veiksmai();
mydb.func("some parameter");
}
}
或者让你的Form2将接口作为构造函数依赖:
public partial class Form2 : Form
{
private readonly db _mydb;
public Form2(db mydb)
{
_mydb = mydb;
}
void function()
{
_mydb.func("some parameter");
}
}
现在,在构建db
时,Form2的使用者有责任传递Form2
的具体实现。
备注:在.NET中作为约定接口名称以I
开头,而db
是一个非常差的接口名称。