none
Вызов функции формы из другой формы RRS feed

  • Вопрос

  • Здравствуйте!

    У меня есть фунция для выполнения sql-запроса (public DataTable GetData(string SqlCommand))
    Я хотел бы вызвать ее из другой формы.
    Как лучше это сделать?

    PS Извините за глупый вопрос, C# вижу второй день..
    • Перемещено Siddharth Chavan 1 октября 2010 г. 22:50 MSDN Forums Consolidation (От:Visual C#)
    27 января 2010 г. 13:34

Ответы

  • Ответ очевиден: нужно передать ссылку на форму в которой определен метод в другую форму. Это можно сделать либо при создании формы добавив перегруженный конструктор второй формы
    private Form1 refForm;
    public Form2(Form1 refForm)
    {
         InitializeComponent();
         this.refForm = refForm;
    }
    и при создании второй формы передавать

    Form2 form = new Form2(this);

    ----------------------------------------------------
    Можно определить статическое свойство в каком-нибудь классе для хранения ссылки на форму в которой определен метод.
    protected class Form1
    {
       ......
      public static Form1 SelfRef
      {
         get; set;
       }

     public Form1()
    {
       SelfRef = this;
    }
    }

    А во второй форме вызывать
    if(Form1.SelfRef != null)
    {
        Form1.SelfRef.MyMethod();
    }

    -------------------------------------------------------------------------------------------------
    Третий способ - изменить архитектуру приложения, отделить UI-код, от кода доступа к данным и вынести метод в третий класс.
    • Предложено в качестве ответа I.Vorontsov 28 января 2010 г. 8:05
    • Отменено предложение в качестве ответа Борис Прол 28 января 2010 г. 13:47
    • Помечено в качестве ответа I.Vorontsov 28 января 2010 г. 14:10
    27 января 2010 г. 14:42

Все ответы

  • Ответ очевиден: нужно передать ссылку на форму в которой определен метод в другую форму. Это можно сделать либо при создании формы добавив перегруженный конструктор второй формы
    private Form1 refForm;
    public Form2(Form1 refForm)
    {
         InitializeComponent();
         this.refForm = refForm;
    }
    и при создании второй формы передавать

    Form2 form = new Form2(this);

    ----------------------------------------------------
    Можно определить статическое свойство в каком-нибудь классе для хранения ссылки на форму в которой определен метод.
    protected class Form1
    {
       ......
      public static Form1 SelfRef
      {
         get; set;
       }

     public Form1()
    {
       SelfRef = this;
    }
    }

    А во второй форме вызывать
    if(Form1.SelfRef != null)
    {
        Form1.SelfRef.MyMethod();
    }

    -------------------------------------------------------------------------------------------------
    Третий способ - изменить архитектуру приложения, отделить UI-код, от кода доступа к данным и вынести метод в третий класс.
    • Предложено в качестве ответа I.Vorontsov 28 января 2010 г. 8:05
    • Отменено предложение в качестве ответа Борис Прол 28 января 2010 г. 13:47
    • Помечено в качестве ответа I.Vorontsov 28 января 2010 г. 14:10
    27 января 2010 г. 14:42
  • Спасибо!

    28 января 2010 г. 13:47