Как реализовать функции интерфейса в пользовательском контроле - PullRequest
1 голос
/ 12 марта 2012

Привет! Я создаю тестовое приложение, которое имеет пользовательский элемент управления с кнопкой, которая будет ссылаться в форме.

enter image description here

Возможно ли связать интерфейс

 public interface ICRUD
    {
        void Test();
    } 

для пользователя Control button1 click event

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
    }
}

, так что мне просто нужно реализовать только функции интерфейса для моей формы 1.

Форма 1:

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 голосов
/ 12 марта 2012

Мне это не кажется правильным. Вероятно, не Form должен реализовывать этот интерфейс. Более того, интерфейс здесь ничего не приносит.

Но если вы действительно хотите это сделать, вы можете обратиться к свойству ParentForm , привести его к своему интерфейсу и затем вызвать метод:

private void button1_Click(object sender, EventArgs e)
{
    var crud = (ICrud)ParentForm;
    crud.Test();
}

Кроме того, в .Net принято писать аббревиатуры (по крайней мере, длинные) так же, как и другие слова, поэтому вы должны назвать свой интерфейс ICrud.

0 голосов
/ 12 марта 2012
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;
      }
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...