如何在用户控件中实现接口函数

时间:2012-03-12 02:51:22

标签: c# winforms user-controls

您好我正在创建一个具有用户控件的测试应用程序,其中Button将在表单中引用。

enter image description here

是否可以绑定接口

 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");
        }
    }
}

谢谢你。

2 个答案:

答案 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