Не работает реализация интерфейса

294
13 апреля 2017, 15:20

Приветствую. В приложении WinForms есть 2 режима работы - админ и юзер в зависимости от логина и пароля которые он ввел. режимы отличаются количеством отображаемых элементов(кнопочек, лаиблов и тд). что бы на каждой форме не писать во время загрузки перечень того что видит а что не видит юзер решил организовать процесс через 1 класс поведения, интерфейс и несколько классов реализаторов. Но нужные элементы не скрываются, в этом проблема. Собственно код :

interface Idostup
{
    void setFunctions();
}

главный класс, через обьект которого происходит реализация интерфейса :

class dostupModul
{
    public Idostup functionsCommand { get; set; }
    public void setControll()
    {
        functionsCommand.setFunctions();
    }
}

для примера один из классов, реализующих разное поведение :

class mainFormFunction : Idostup
{
    public void setFunctions()
    {
        Main m = new Main();
        m.lbl_levelDostup.Visible = false;  // это не работает
        MessageBox.Show("ewwerwerwer",""); // это работает
      }
}

И загрузка самой формы на которой нужно что то скрыть :

    private void Main_Load(object sender, EventArgs e)
    {
        dostupModul M = new dostupModul();
        M.functionsCommand = new mainFormFunction();
        M.setControll();

Что не так написал, где ошибся подскажите ?

Answer 1

Вы создаёте новый объект Main в методе setFunctions, устанавливаете ему какое-то свойство и всё, дальше ничего с этим объектом не происходит. Делаете вы это в методе Main_Load, который принадлежит другому объекту Main. Вам нужно передавать объект Main, событие загрузки которого срабатывает, в метод setFunctions.

Например:

interface Idostup
{
    void setFunctions(Main main);
}
class dostupModul
{
    private Main _main;
    public dostupModul(Main main)
    {
        _main = main;
    }
    public Idostup functionsCommand { get; set; }
    public void setControll()
    {
        functionsCommand.setFunctions(_main);    
    }
}
class mainFormFunction : Idostup
{
    public void setFunctions(Main main)
    {
        main.lbl_levelDostup.Visible = false;
        MessageBox.Show("ewwerwerwer","");    
    }
}

Вызов:

private void Main_Load(object sender, EventArgs e)
{
    dostupModul M = new dostupModul(this);
    M.functionsCommand = new mainFormFunction();
    M.setControll();
}
READ ALSO
Как добавить картинку к элементу <li>

Как добавить картинку к элементу <li>

Всем приветКак я могу добавить картинку (glyphicon glyphicon-cog) к элементу "li" ?

214
C# TabPage Почему не показывается Image?

C# TabPage Почему не показывается Image?

В TabControl Добавляю ImageList

335
Работа в фоновом режиме (Xamarin)

Работа в фоновом режиме (Xamarin)

Подскажите как можно решить данный кейс для iOS 9+, Android 44+ и WP 8

274