Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.12.2020
Сообщений: 8

Получение доступа к label из других классов

19.12.2020, 17:22. Показов 1367. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть двумерный массив label и я пытаюсь его изменить из других классов, но тщетно. Подскажите в чем проблема?
Ссылку я передаю на класс, вроде как.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public partial class Form1 : Form
    {
 
        Random rand = new Random();
        bool newGame = false;
        static ArrayList row = new ArrayList();
        static Form1 form = new Form1();
        static cell cell = new cell(form);
        static game game = new game(cell, form);
 
        public Form1() 
        {
            InitializeComponent();
        }
 
        public Label[,] GetLabels()
        {
            Label[,] Game = {
                                {lbl1,lbl2,lbl3,lbl4},
                                {lbl5,lbl6,lbl7,lbl8},
                                {lbl9,lbl10,lbl11,lbl12},
                                {lbl13,lbl14,lbl15,lbl16}
                              };
            return Game;
        }
        public Label Score()
        {
            return lblScore;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            cell.generate();
            cell.generate();
            cell.generate();
        }
}
И вот класс

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class cell
    {
        static ArrayList row = new ArrayList();
        Random rand = new Random();
        private Label[,] Game;
        private Form1 form;
        public cell(Form1 form1)
        {
            this.form = form1;
        }
 public void generate()
        {
            row.Clear();
 
            Label[,] Game = form.GetLabels();
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    if (Game[i, j].Text == "")
                    {
                        row.Add(i * 4 + j + 1);
                    }
                }
            }
 
            if (row.Count > 0)
            {
 
                int fillNumber = int.Parse(row[rand.Next(0, row.Count - 1)].ToString());
                int i0 = (fillNumber - 1) / 4;
                int j0 = (fillNumber - 1) - i0 * 4;
                int row2 = rand.Next(1, 10);
                if (row2 == 1 || row2 == 2 || row2 == 3 || row2 == 4 || row2 == 5 || row2 == 6 || row2 == 7 || row2 == 8)
                {
                    Game[i0, j0].Text = "2";
                }//Выбираем 2 или 4. на цифру 2 шанс 80% (если выпадают числа 1;2;3;4;5;6;7;8), на 4 20% (если выпадают числа 9;10)
                else
                {
                    Game[i0, j0].Text = "4";
                }
 
            }
            Color();
        }
    }
При загрузке формы должно появиться 3 клетки с цифрами, но их нет

Еще файл программы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
Возможно, я передаю неверно форму в класс. Подскажите, как быть?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2020, 17:22
Ответы с готовыми решениями:

Cделать Label видимым для других классов
Как сделать Label public - ом? Необходимо для передачи в label текста из другого класса: MainWindow MW = new MainWindow(); ...

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

Получение доступа к защищенным файлам/папкам Win7 из других ОС
Доброго времени суток! Можно ли вытащить файлы из DocumentsAndSettings Win7 из WinXP или LInux? В XP пишет что доступа нет, в Linux...

2
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
19.12.2020, 22:30
Лучший ответ Сообщение было отмечено Ruslan__ как решение

Решение

Цитата Сообщение от Ruslan__ Посмотреть сообщение
Возможно, я передаю неверно форму в класс.
Проблема в том, что ты обращаешься не к тому экземпляру формы. Экземпляр cell ты создаёшь из статического поля form, а форма, которая отображается у тебя на экране — это другой экземпляр класса Form1, который создаётся в методе Main
1
0 / 0 / 0
Регистрация: 19.12.2020
Сообщений: 8
20.12.2020, 13:09  [ТС]
Да, я понял, что передавал не так.
Вот так все работает, вроде, все верно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class Form1 : Form
    {
 
        Random rand = new Random();
        bool newGame = false;
        static ArrayList row = new ArrayList();        
        cell cell;
        game game;
 
public Form1() 
        {
            InitializeComponent();
            cell = new cell(this);
            game = new game(cell, this);
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2020, 13:09
Помогаю со студенческими работами здесь

Определение классов, описание экземпляров классов (объектов). Уровни доступа к членам классов
Разработать класс, моделирующий предметной области, описание которой приведено в Вашему варианте. Данные предметной области должны...

Определение классов, описание экземпляров классов (объектов). Уровни доступа к членам классов
Определить класс с именем Dyscyplina, что абстрагирует понятие &quot;Учебная дисциплина&quot; и содержит следующие данные:  название...

Преобразования объектов классов в объекты других классов
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары и обратно, по курсу 1 фунт = 50...

Доступ к нескольким Label'ам из других потоков
столкнулся с похожей проблемой (https://www.cyberforum.ru/csharp-net/thread428210.html)... надо дать доступ к нескольким Label ... тут...

Доступ к ui из других классов
Надо получить доступ к элеменам ui из другого класса, но не могу понять как. С доступом из класса MyWidget всё отлично.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru