我有几个Control
需要绑定ToolStripMenuItem
到Button
他们的点击事件的函数。他们将生成一个新的Form
或将一个添加TabPage
到当前的TabControl
. 我最终可能会有几个不同Control
的需要相同的函数,所以我想制作一个全局函数存储库。
我会有一个Services
如下所示的类:
public class Services {
TabControl container;
delegate void fonction(int id);
Dictionary<string, fonction> functions = new Dictionary<string, fonction>();
public Services(TabControl control) {
container = control;
InitFunctions();
}
public Delegate Getfunction(string name) {
if (functions.ContainsKey(name))
return functions[name];
else
throw new NotImplementedException("Failed to instantiate " + name );
}
// List of all the desired functions
// Function example
private void ProductLoan(int id) {
string name = "Loan"+id.ToString();
Form newForm = new Loan();
newForm.Text = Properties.Resources.MakeLoan;
newForm.ShowDialog();
}
private void InitFunctions() {
fonction f = new fonction(ProductLoan);
functions.Add("Loan", f);
// For each functions
// f = new fonction(name);
// functions.Add(name, f);
}
}
此类将在程序启动时实例化并全局存储,以便在任何地方都可以访问它。如果我这样处理错误,请纠正我,但我没有将Services
类设为静态,因为它需要有一个TabControl
and 的实例来初始化函数列表。
我不知道这是否是个好主意,所以我会很感激一些建议。