Вызов метода из главной формы в другой класс - PullRequest
0 голосов
/ 27 августа 2018

Я знаю, что об этом уже спрашивали, но не могу найти правильный пост с решением.

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

Мой код:

public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
  if (checkBox1.Checked)
   {
     Thread.Sleep(2000);         
   }    
}

Я хочу вызвать этот метод в другом классе, так что только если флажок включен, будет выполнен сон.

Извините за путаницу, если вам нужно что-то еще, просто спросите.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Другой способ решить эту проблему - создать общедоступный статический класс с именем Settings и позволить флажку записать значение там. Этот статический класс может быть легко прочитан из другого класса.
Также легко добавить больше вещей в этот класс настроек

public static class Settings
{ 
    private static bool _checkChanged;

    public static CheckChanged
    {
         get { return _checkChanged; }
         set { _checkChanged = value; }
    }
}


public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
     Settings.CheckChanged = checkBox1.Checked;
}

тогда из другого класса делай

if (Settings.CheckChanged)
{
    // do here whatever it takes...
}
0 голосов
/ 27 августа 2018

Если я правильно понимаю, вам нужно знать, установлен ли флажок из другого класса. Есть несколько способов сделать это.

  1. Передайте ссылку на флажок при инициализации другого класса. Вы создаете класс с чем-то вроде MyClass foo = new MyClass(...);. Просто передайте флажок конструктору класса: MyClass foo = new MyClass(checkBox1, ...).

  2. Выставьте флажок как статический. Вы не должны делать это, так как это плохая идея, и если вам нужно сделать это, ваше приложение не разработано должным образом. Однако, если вам это нужно ... Добавьте public static CheckBox checkbox; к вашей форме, а в конструкторе вашей формы добавьте checkbox = checkBox1;. Затем вы можете получить доступ к флажку с помощью <YourForm>.checkbox.

  3. Используйте Настройки приложения , как предложил Fildor. Это, вероятно, лучший способ, но это может быть трудно сделать, если вы неопытны.

Определенно найдите руководство или руководство по разработке приложений WinForms, иначе вы столкнетесь с проблемами, когда начнете делать что-то большее. И если вы новичок в WinForms, рассмотрите возможность использования WPF , которая в основном является современной WinForms. WinForms является устаревшей технологией и более не разрабатывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...