Подскажите пожалуйста, в чем проблема

183
15 апреля 2018, 21:55

Имеется два .cs файла, которые должны между собой взаимодействовать, но происходит это как-то странно. Мне нужно вызвать функцию MainAction, которая находится в Class1, из Class2. Различными способами у меня максимум получалось сделать это два раза, а далее программа просто стояла на месте. В чём ошибка, ткните носом пожалуйста

Class1.cs

public partial class Class1 : MetroForm
{ 
    public Confirm()
    {
       InitializeComponent();
       backgroundoworker1.DoWork += fornewthread;
    }
    public void Action1(object sender, EventArgs e)
    {
       if (backgroundworker1.IsBusy != true)
           {
             backgroundWorker1.RunWorkerAsync();
           }
       else 
           {
           MessageBox.Show("Error! Worker is busy.");
           }
    }
    public void MainAction(object sender, EventArgs e)
        {
          //тут происходит много действий
        }
}

Class2.cs

private void btn_click(object sender, EventArgs e)
{
   if (var1 >= var2)
        {
            //здесь пробовал и такое:
            Class1.action1(sender, e);
            This.Close();
            //и такое:
            Class1.MainAction(sender, e);
            This.Close();
        }
}

Но ни один из этих вариантов не помог.

Answer 1

Чтобы обратиться к методу Action1 нужно создать экземпляр класса, т.к. метод не статический:

var instance = new Class1();
instance.Action1(sender, e);

Или же сделайте метод статическим:

public static void Action1(object sender, EventArgs e)
{
  //Остальной код
}

Тогда вы сможете вызывать метод без создания экземпляра.

READ ALSO
Ограничение поворота объекта

Ограничение поворота объекта

Как в Unity банально ограничить поворот объекта? Например, имеется обычный цилиндр, который поворачивается вокруг оси ХКак сделать, чтоб при...

187
Просмотр подтаблицы Access через sql - запрос в c#

Просмотр подтаблицы Access через sql - запрос в c#

Добрый вечерКак прочитать данные из подтаблицы на языке c# при помощи sql-запроса

184