Использование WinForm "button.visible" в качестве параметра метода - PullRequest
0 голосов
/ 20 февраля 2020

Я создаю библиотечное приложение, используя WinForms. У меня есть eLibraryClasses, где у меня есть все данные, включая все службы форм, и eLibraryUI, где у меня есть все мои WinForms.

У меня есть проблема в одной форме, где я хотел бы изменить состояния кнопки. Доступно значение false или true .

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

public void ShowDrawnBook(bool clickedButtonVisible, bool toReadButtonVisible, int buttonNumber)
    {
        //Hide button which cover answer
        clickedButtonVisible = false;
        //Add option to add randomized book to "To read" bookshelf
        toReadButtonVisible = true;
        //Return index of clicked button
        buttonClicked = buttonNumber;
    }

И пользовательский интерфейс выглядит, например:

service.ShowDrawnBook(randomBook2Button.Visible, toReadButton.Visible, 2);

Я пытался, но я не мог t использовать «ref» и «out» для этих свойств. И таким образом выше он строит правильно, но не работает из-за не изменения параметров вне метода. У меня их так много в этой форме, поэтому я мог бы сделать это как

randomBook2Button.Visible = SomeMethod();
toReadButton.Visible = SomeMethod();
... for every variable

Но я бы хотел этого избежать.

Есть ли способ отправить туда свойства кнопок ( bools) как параметры?

1 Ответ

1 голос
/ 20 февраля 2020

Булевы значения передаются по значению, а не по ссылке, таким образом, ваша «проблема».

Чтобы решить вашу проблему, просто используйте Button (s) в качестве параметров вместо логических. Button является классом, поэтому передается по ссылке.

Затем в вашем методе измените состояние свойств Button (s) по своему усмотрению.

public void MyMethod(Button myButton1, Button myButton2) { myButton1.Visible = true; myButton2.Visible = false; }

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