您好我正在创建一个具有用户控件的测试应用程序,其中Button将在表单中引用。
是否可以绑定接口
public interface ICRUD
{
void Test();
}
向用户控制按钮1单击事件
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//CALL ICRUD.Test() execute when click on form1 and then show I am Clicked
}
}
这样 我只需要实现我的form1的接口函数。
Form1中:
using System.Windows.Forms;
namespace TEST
{
public partial class Form1 : Form , ICRUD
{
public Form1()
{
InitializeComponent();
}
public void Test()
{
MessageBox.Show("I am Clicked");
}
}
}
谢谢你。
答案 0 :(得分:0)
private void button1_Click(object sender, EventArgs e)
{
for(var parent = this.Parent; parent != null; parent = parent.Parent)
{
var crud = parent as ICRUD;
if (crud != null)
{
crud.Test();
break;
}
}
}
答案 1 :(得分:0)
这对我来说似乎不对。它可能不是应该实现此接口的Form
。更重要的是,界面没有带来任何东西。
但如果您真的想这样做,可以访问the ParentForm
property,将其转换为您的界面,然后调用该方法:
private void button1_Click(object sender, EventArgs e)
{
var crud = (ICrud)ParentForm;
crud.Test();
}
此外,.Net中的约定是将缩写(至少是长缩写)与其他单词相同,因此您应该将接口命名为ICrud
。