Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Как сделать массив кнопок глобальной переменной?

#c_sharp #wpf #button


У меня есть массив кнопок с которыми я работаю через некоторые методы, и в каждом
из них приходится пересоздавать(Button[,] buttons = new Button[,]  {...}) этот массив
чтобы работать с ним. Можно ли этот массив сделать глобальной переменной?
    


Ответы

Ответ 1



Правильный способ: не использовать глобальных переменных. Плохой способ: объявить в каком-то одном классе, (который будет виден из нужных методов) статическую переменную (или свойство) нужного типа.

Ответ 2



Как говорилось ранее, глобальные переменные - это плохо. Но все зависит от того, насколько они глобальны, а именно - какова область видимости. К примеру, у нас есть класс формы, внутри которого есть методы, в которых необходим массив кнопок, к которому мы периодически обращаемся, будет выглядеть как-то так: public partial class MainWindow : Window { private Button[,] buttons; // может быть Button[]? public MainWindow() { InitializeComponent(); buttons = new Button[,] {...} // тут мы инициализируем наш массив (к примеру) } private void button_Click(object sender, RoutedEventArgs e) { // внутри метода мы как-то работаем с нашим массивом кнопок } private void button1_Click(object sender, RoutedEventArgs e) { // внутри метода мы как-то работаем с нашим массивом кнопок } } Привел примитивный пример, где buttons видимо в пределах MainWindow. В таком виде это все же выглядит не так страшно, как могло бы быть на самом деле. Поэтому в Вашем случае необходимо выбрать оптимальную область видимости переменной. А еще, в принципе можно написать метод, который будет возвращать вам список кнопок лежащих на определенном компоненте, вот пример. Конечно, возможно это не подойдет для решения Вашей задачи, но осмелюсь предложить Вам в качестве примера для ознакомления. P.S.: Button[,] - это двумерный массив (взято из Вашего вопроса), возможно имеет смысл использовать одномерный массив Button[]?

Комментариев нет:

Отправить комментарий